如何解决如何在石墨烯中将函数作为查询结果返回?
我有一个帖子模型,我想知道当前登录的用户是否喜欢该帖子:
是否可以进行此项工作,还是应该使用其他请求来了解用户是否喜欢该帖子:
class PostNode(DjangoObjectType):
id = graphene.ID(source='pk',required=True)
liked = graphene.Boolean(source=Like.objects.filter(user=info.context.user,post=Post.objects.get(pk=id)))
class Meta:
model = Post
interfaces = (graphene.relay.Node,)
(当然不起作用)
查询:
query {
posts {
edges {
node {
liked
title
text
}
}
}
}
结果:
{
"data": {
"posts": {
"edges": [
{
"node": {
"liked": false,"title": "hi","text": "m"
}
},{
"node": {
"liked": true,"title": "blalblala","text": "blalalblala"
}
}
]
}
}
}
解决方法
您可以使用 custom resolvers 来实现此行为,如下所示:
class PostNode(DjangoObjectType):
id = graphene.ID(required=True)
liked = graphene.Boolean()
class Meta:
model = Post
interfaces = (graphene.relay.Node,)
def resolve_liked(parent,info):
# "parent" here is the Post model instance
return Like.objects.exists(user=info.context.user,post=parent)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。