突变-批量创建对象

Quy*_*ang 4 graphql graphene-python

我想使用石墨烯一口气创造出很多人。该文档仅提及创建这样的人的方式:

class CreatePerson(graphene.Mutation):
class Input:
    name = graphene.String()
    age = graphene.Int()

ok = graphene.Boolean()
person = graphene.Field(lambda: Person)

@staticmethod
def mutate(root, args, context, info):
    person = Person(name=args.get('name'), age=args.get('age'), mobile=args.get('mobile'))
    ok = True
    return CreatePerson(person=person, ok=ok)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以完成它吗?

mar*_*ani 5

除了使用一种创建对象列表的变异之外,您还可以在一个GraphQL请求中调用一种可以多次创建一个对象的变异。这是使用GraphQL别名完成的:

mutation {
  c001: createPerson(
    name: "Donald Duck"
    age: 42
  ) {
    id
  }

  c002: createPerson(
    name: "Daisy Duck"
    age: 43
  ) {
    id
  }

  c003: createPerson(
    name: "Mickey Mouse"
    age: 44
  ) {
    id
  }
}
Run Code Online (Sandbox Code Playgroud)


Quy*_*ang 5

我可以根据Jan Han\xc4\x8di\xc4\x8d的答案找出解决方案

\n\n

在这种情况下有一种类型称为graphene.InputObjectType使用

\n\n

解决方案可以是

\n\n
class PersonInput(InputObjectType):\n    name = graphene.String()\n    age = graphene.Int()\n\nclass CreatePeople(graphene.Mutation):\n    class Input:\n       people = graphene.List(PersonInput)\n\n    people = graphene.List(lambda: Person)\n\n    @staticmethod\n    def mutate(root, args, context, info):\n        people = [Person.objects.create(name=person.name, age=person.age) for person in args.get(\'people\')]\n        return CreatePeople(people=people)\n
Run Code Online (Sandbox Code Playgroud)\n