石墨烯Django获得项目
我有一个问题:石墨烯Django获得项目,django,graphql,graphene-django,Django,Graphql,Graphene Django,我有一个问题: class Query(object): all_articles = graphene.List(ArticleType) category_articles = graphene.List(ArticleType, category = graphene.String()) def resolve_all_articles(self, info, **kwargs): return Article.objects.all() def resolve_article
class Query(object):
all_articles = graphene.List(ArticleType)
category_articles = graphene.List(ArticleType, category = graphene.String())
def resolve_all_articles(self, info, **kwargs):
return Article.objects.all()
def resolve_article_by_category(self, info, **kwargs):
category = kwargs.get('category')
return Article.objects.get(category = category)
我想按特定类别获取所有文章。我试图提出这样的要求:
query {
categoryArticles(category: "SPORT") {
title
}
}
但它让我回想起:
{
"data": {
"categoryArticles": null
}
}
有人知道我做错了什么,或者如何按特定类别获取文章吗?如果有人能帮忙,我将非常感激。谢谢 更改getAllArticlesByCategory以返回文章查询集 它可能看起来有点像这样
def resolve_articles_by_category(self, info, **kwargs):
return Article.objects.filter(category__name=kwargs.get('category_name'))
查询类的解析函数有一个命名约定, 将resolve_uu前置到类变量 如果
Article.objects.get(category=category)
返回所需的结果,它应该可以工作
category_articles = graphene.List(ArticleType, category = graphene.String())
def resolve_category_articles(self, info, **kwargs):
category = kwargs.get('category')
return Article.objects.get(category = category)
注意:将其重命名为
category\u article
,因为它返回一篇文章,那么您还必须将函数重命名为resolve\u category\u article
,因此,最简单的方法是使用此函数
在我的例子中,它将如下所示:
import graphene
from graphene_django.types import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
from .models import Article, User
class ArticleNode(DjangoObjectType):
class Meta:
model = Article
filter_fields = ['category']
interfaces = (graphene.relay.Node,)
class Query(object):
all_articles = DjangoFilterConnectionField(ArticleNode)
@xadm,谢谢,我会用的。事实上,我已经看到了,只是想也许有可能以其他方式,但无论如何,谢谢你。也许是一些魔术作品?