如何解决如何获取模式的当前登录用户? (django graphql api)
我的目标:如果用户的 id 为 1,我试图返回帖子的所有字段,否则我只想返回 3 个字段。
我的问题是:在查询或更改中我可以执行 info.context.user.id
但在架构中我不能这样做。
在我下面的代码中,您可以注意到他的未定义变量 current_loggedin_user
,我不知道如何获取它的值。
import graphene
from graphene_django import DjangoObjectType
from . import models
from django.conf import settings
class Posts(DjangoObjectType):
class Meta:
model = models.ExtendUser
if (current_logedin_user.id==1):
field = '__all_'
else:
fields = ['username','id','imageUrl']
解决方法
您需要将所有对架构可见的字段都包含在内,然后为您想要为某些用户隐藏的字段自定义解析器方法。例如:
class Posts(DjangoObjectType):
class Meta:
model = models.ExtendUser
def resolve_restricted_field(self,info):
if info.context.user.id == 1:
return self.restricted_field
return None
有关更多示例,请参阅 How to limit field access on a model based on user type on Graphene/Django?
,尝试这样的事情
class Posts(DjangoObjectType):
class Meta:
model = models.ExtendUser
class Query(ObjectType):
fields = graphene.List(Posts)
def resolve_fields(self,info,**kwargs):
if info.context.user.pk == 1:
return ExtendUser.objects.all()
return ExtendUser.objects.values_list('username','id','imageUrl',flat=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。