【发布时间】:2021-06-10 13:22:03
【问题描述】:
我正在使用 Django + GraphQL,使用DjangoListField 非常方便。它允许我在 ObjectType 级别覆盖 get_queryset 并确保在那里验证所有权限。这样,我就可以在一个地方进行所有权限检查。
但是,每当我需要执行以下操作时:
contract = graphene.Field(ClientContractType,
pk=graphene.ID(required=True))
我还必须在 resolve_contract 方法中重复权限验证。我想出了以下解决方案来确保许可并避免重复:
def resolve_contract(self, info, pk):
qs = ClientContract.objects.filter(pk=pk)
return ClientContractType.get_queryset(qs, info).get()
它可以工作,但我希望有某种DjangoObjectField,它会为我封装它,并可能以某种方式将参数传递给ClientContractType。有人遇到过这个问题或知道更好的解决方案吗?
【问题讨论】:
标签: django graphql graphene-python graphene-django