Graphene-Django创建多个实例

mu

假设我有一个带有两个表的models.py:

class Category(models.Model):
    cat = models.CharField(max_length=100)


class Thing(models.Model):
    desc = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, blank=True)

和我的架构如下:

class ThingType(DjangoObjectType):
    class Meta:
        model = Thing


class FindThing(graphene.ObjectType):
    things = graphene.List(
        ThingType,
        search=graphene.String(),
        thing=graphene.ID(),
    )

    def resolve_things(self, info, thing=None, search=None, **kwargs):
        qs = Thing.objects.all()

        if search:
            filter = (
                Q(desc__icontains=search)
            )
            qs = qs.filter(filter)
        if thing:
            qs = qs.filter(id=thing)

        return qs


class CreateThing(graphene.Mutation):
    id = graphene.Int()
    desc = graphene.String()
    category = graphene.Field(FindCategory)

    class Arguments:
        desc = graphene.String()
        category = graphene.Int()

    def mutate(self, info, desc, category):
        thing = Thing(
            desc=desc,
            category=Category.objects.get(id=category)
        )
        thing.save()

        return CreateThing(
            id=thing.id,
            desc=thing.desc,
            category=thing.category_id
        )
class CategoryType(DjangoObjectType):
    class Meta:
        model = Category


class GetCategory(graphene.ObjectType):
    category = graphene.List(
        CategoryType,
        category=graphene.String(),
    )

    def resolve_category(self, info, category=None, **kwargs):
        qs = Category.objects.all()

        if category:
            get = (
                Q(category__contains=category)
            )
            qs = qs.get(get)

        return qs


class FindCategory(graphene.ObjectType):
    categories = graphene.List(
        CategoryType,
        search=graphene.String(),
        cat=graphene.ID(),
    )

    def resolve_categories(self, info, cat=None, search=None, **kwargs):
        qs = Category.objects.all()

        if search:
            filter = (
                Q(cat__icontains=search)
            )
            qs = qs.filter(filter)
        if cat:
            qs = qs.filter(id=cat)

        return qs


class CreateCategory(graphene.Mutation):
    id = graphene.Int()
    cat = graphene.String()
    desc = graphene.String()

    class Arguments:
        cat = graphene.String()
        desc = graphene.String()

    def mutate(self, info, cat, desc):
        category = Category(
            cat=cat
        )
        category.save()
        thing = Thing(
            desc=desc,
            category_id=category.id
        )
        thing.save()

        return CreateCategory(
            id=category.id,
            cat=category.cat,
            desc=thing.desc,
        )

我设法创建了一个架构,其中可以创建一个已经链接到新创建的单个事物的新类别:

mutation createCategory{
  createCategory(cat:"cat7", desc:"defg"){
    id
    cat
    desc
  }
}

是否可以创建一个CreateCategory django-graphene模式,在其中可以创建具有多个其他新事物的类别?

塔玛拉山

您可以允许CreateCategory突变接受多种描述的列表:

CreateCategory:
    descs = graphene.List(String)

    class Arguments:
    descs = graphene.List(String)

然后在mutate函数中遍历此列表:

new_things = []

for desc in descs:
    thing = Thing(
        desc=desc,
        category_id=category.id
    )
    thing.save()
    new_things.append(thing.desc)

return CreateCategory(
    id=category.id,
    cat=category.cat,
    descs=new_things
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Graphene-Django 文件命名约定

来自分类Dev

使用 django-graphene 时出现错误

来自分类Dev

创建或更新更新Django Graphene中的多对多关系

来自分类Dev

使用最新的graphene和graphene-django版本时导入(无法从“ graphql”导入名称“ ResolveInfo”)错误

来自分类Dev

使用 GraphQL 和 Graphene 在多个级别进行过滤

来自分类Dev

带有整数字段的Django Graphene表单验证

来自分类Dev

Django Graphene使用多层嵌套外键编写变异

来自分类Dev

我无法在GitHub动作中安装graphene-django

来自分类Dev

如何在graphene-python DjangoObjectType中获取模型的当前实例

来自分类Dev

如何在graphene-django GraphQLTestCase中使用django-grahql-jwt进行身份验证?

来自分类Dev

Django / Graphene Mutation错误“您需要传递有效的Django模型”无法修复它

来自分类Dev

如何在Django REST Framework身份验证中使用Graphene GraphQL框架

来自分类Dev

Django-Graphene:没有名为“ graphql_jwt”的模块

来自分类Dev

一个简单的查询,但是Graphene-Django返回空值

来自分类Dev

如何限制谁可以使用graphene-django访问GraphiQL API浏览器?

来自分类Dev

如何让 cors 与 angular (apollo client) 和 django/graphene 一起正常工作

来自分类Dev

使用graphene-django时如何在django-filter的filterset_class中使用Relay的分页功能

来自分类Dev

如何在graphene-django中仅向用户配置文件所有者显示特定字段?

来自分类Dev

Django ModelForm使用不同的ForeignKey创建多个实例

来自分类Dev

创建splFileObject的多个实例

来自分类Dev

创建preparedstatement的多个实例

来自分类Dev

创建类的多个实例

来自分类Dev

graphene-django:自0.15.0起不推荐使用既不包含'Meta.fields'也不包含'Meta.exclude'的'Meta.model',现在禁止使用

来自分类Dev

Python Graphene具有多对多关系

来自分类Dev

Graphene-Python +私有Azure函数?

来自分类Dev

Graphene Python类无法识别自己

来自分类Dev

Arquillian Drone + Graphene快要死了吗?

来自分类Dev

Arquillian Graphene @InitialPage 总是返回 null

来自分类Dev

如何在 Graphene 2.3 上运行 MavenImporter

Related 相关文章

  1. 1

    Graphene-Django 文件命名约定

  2. 2

    使用 django-graphene 时出现错误

  3. 3

    创建或更新更新Django Graphene中的多对多关系

  4. 4

    使用最新的graphene和graphene-django版本时导入(无法从“ graphql”导入名称“ ResolveInfo”)错误

  5. 5

    使用 GraphQL 和 Graphene 在多个级别进行过滤

  6. 6

    带有整数字段的Django Graphene表单验证

  7. 7

    Django Graphene使用多层嵌套外键编写变异

  8. 8

    我无法在GitHub动作中安装graphene-django

  9. 9

    如何在graphene-python DjangoObjectType中获取模型的当前实例

  10. 10

    如何在graphene-django GraphQLTestCase中使用django-grahql-jwt进行身份验证?

  11. 11

    Django / Graphene Mutation错误“您需要传递有效的Django模型”无法修复它

  12. 12

    如何在Django REST Framework身份验证中使用Graphene GraphQL框架

  13. 13

    Django-Graphene:没有名为“ graphql_jwt”的模块

  14. 14

    一个简单的查询,但是Graphene-Django返回空值

  15. 15

    如何限制谁可以使用graphene-django访问GraphiQL API浏览器?

  16. 16

    如何让 cors 与 angular (apollo client) 和 django/graphene 一起正常工作

  17. 17

    使用graphene-django时如何在django-filter的filterset_class中使用Relay的分页功能

  18. 18

    如何在graphene-django中仅向用户配置文件所有者显示特定字段?

  19. 19

    Django ModelForm使用不同的ForeignKey创建多个实例

  20. 20

    创建splFileObject的多个实例

  21. 21

    创建preparedstatement的多个实例

  22. 22

    创建类的多个实例

  23. 23

    graphene-django:自0.15.0起不推荐使用既不包含'Meta.fields'也不包含'Meta.exclude'的'Meta.model',现在禁止使用

  24. 24

    Python Graphene具有多对多关系

  25. 25

    Graphene-Python +私有Azure函数?

  26. 26

    Graphene Python类无法识别自己

  27. 27

    Arquillian Drone + Graphene快要死了吗?

  28. 28

    Arquillian Graphene @InitialPage 总是返回 null

  29. 29

    如何在 Graphene 2.3 上运行 MavenImporter

热门标签

归档