如何解决我如何检索 django-graphql-auth 和 graphene-django 的用户列表?
使用
django==3.1.5
graphene-django==2.15.0
django-graphql-auth==0.3.15
django-graphql-jwt==0.3.0
我正在尝试允许在我的 GraphQL API 中将外键从模型设置为用户。
class WorkOrder(BaseModel,models.Model):
service_technician = models.ForeignKey(
settings.AUTH_USER_MODEL,on_delete=models.PROTECT,related_name='service_technician',null=True
)
query getUsers {
users {
edges {
node {
username,archived,verified,email,secondaryEmail,}
}
}
}
{
"errors": [
{
"message": "Cannot query field \"serviceTechnician\" on type \"WorkOrderType\".","locations": [
{
"line": 35,"column": 5
}
]
}
]
}
这是我当前在 schema.py
中输入的工单和用户
class UserInput(graphene.InputObjectType):
id = graphene.ID()
username = graphene.String()
email = graphene.String()
password1 = graphene.String()
password2 = graphene.String()
class WorkOrderInput(graphene.InputObjectType):
id = graphene.ID()
service_technician = graphene.List(UserInput)
我的 UserType 定义继承自 graphql_auth\schema.py 中的 UserNode
class UserType(UserNode):
class Meta:
model = get_user_model()
filter_fields = app_settings.USER_NODE_FILTER_FIELDS
exclude = app_settings.USER_NODE_EXCLUDE_FIELDS
interfaces = (graphene.relay.Node,)
skip_registry = True
pk = graphene.Int()
archived = graphene.Boolean()
verified = graphene.Boolean()
secondary_email = graphene.String()
最后,我的 CreateWorkOrder 突变
class CreateWorkOrder(graphene.Mutation):
class Arguments:
input = WorkOrderInput(required = True)
ok = graphene.Boolean()
workorder = graphene.Field(WorkOrderType)
@staticmethod
def mutate(root,info,input=None):
ok = True
resolved = resolve_or_create(technician=input.service_technician)
# resolve_or_create returns the resolved object,a newly created object,or None
tech = resolved['technician']
workorder = WorkOrder.objects.create(
service_technician = tech,)
return CreateWorkOrder(ok=ok,workorder=workorder)
我的 resolve_workorders 查询只返回 WorkOrder.objects.all()
总的来说,我对 graphQL 很陌生,所以如果有更多信息或明显的修复,我会很高兴知道您是如何得出这个结论的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。