说我有,
class PersonNode(DjangoObjectType):
class Meta:
model = Person
fields = ('first_name', 'last_name', 'age',
'sex', 'alive', 'unique_identifier',)
filter_fields = ('first_name', 'last_name', 'age',
'sex', 'alive', 'unique_identifier',)
interfaces = (graphene.relay.Node,)
class PersonNodeInput(graphene.InputObjectType):
first_name = graphene.String()
last_name = graphene.String()
# rest of person model fields
class Valid(graphene.ObjectType):
ok = graphene.Boolean()
class Query(graphene.ObjectType):
validate_person = graphene.Field(Valid, args={
"data": PersonNodeInput()})
person = graphene.relay.Node.Field(PersonNode)
all_people = DjangoFilterConnectionField(PersonNode)
def resolve_validate_person(root, info, data):
print("resolve validate person")
return Valid(ok=True)
是否可以避免写出 PersonNodeInput?如果您可以子类化“DjangoInputObjectType”之类的内容并在 Meta 属性中指定所需的模型和字段,那就太好了。
答案 0 :(得分:0)
我们一直在使用这个 Graphene Django CUD 库,它试图删除一些涉及定义突变的样板。
根据他们的例子调整你的案例看起来像
from graphene_django_cud.mutations import DjangoCreateMutation
class CreatePersonMutation(DjangoCreateMutation):
class Meta:
model = Person
class PersonMutations(graphene.ObjectType):
create_person = CreateUserMutation.Field()
schema = Schema(mutation=PersonMutations)
我不知道它与中继节点的配合情况如何,因为我们没有使用中继。