如何在石墨烯中将函数作为查询结果返回?
Posted
技术标签:
【中文标题】如何在石墨烯中将函数作为查询结果返回?【英文标题】:How to return a function as a query result in graphene? 【发布时间】:2020-11-30 21:33:16 【问题描述】:我有一个帖子模型,我想知道当前登录的用户是否喜欢该帖子:
这样的事情会起作用吗,或者我应该使用不同的请求来了解用户是否喜欢/不喜欢该帖子:
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"
]
【问题讨论】:
如果没有关于您的架构的额外信息,很难知道这是否可行 :) 【参考方案1】:您可以使用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)
【讨论】:
以上是关于如何在石墨烯中将函数作为查询结果返回?的主要内容,如果未能解决你的问题,请参考以下文章