石墨烯 Django 获取项目
Graphene Django getting items
我有一个问题:
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
}
}
但是 returns 我:
{
"data": {
"categoryArticles": null
}
}
有人知道我做错了什么或如何按特定类别获取文章吗?如果有人可以提供帮助,我将不胜感激。谢谢!
将您的 getAllArticlesByCategory 更改为 return 文章查询集。
它可能看起来有点像这个。
def resolve_articles_by_category(self, info, **kwargs):
return Article.objects.filter(category__name=kwargs.get('category_name'))
查询的解析函数有一个命名约定 class,
您将 resolve_ 添加到 class 变量。
如果 Article.objects.get(category = category)
returns 想要的结果,应该可以。
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)
N.B 重命名为 category_article
因为它返回一篇文章,那么你也必须将函数重命名为 resolve_category_article
所以,最简单的方法就是使用这个 https://docs.graphene-python.org/projects/django/en/latest/filtering/。
在我的例子中,它看起来像这样:
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
在评论中提到了文档 link。
docs.graphene-python.org/projects/django/en/latest/filtering
我有一个问题:
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
}
}
但是 returns 我:
{
"data": {
"categoryArticles": null
}
}
有人知道我做错了什么或如何按特定类别获取文章吗?如果有人可以提供帮助,我将不胜感激。谢谢!
将您的 getAllArticlesByCategory 更改为 return 文章查询集。
它可能看起来有点像这个。
def resolve_articles_by_category(self, info, **kwargs):
return Article.objects.filter(category__name=kwargs.get('category_name'))
查询的解析函数有一个命名约定 class, 您将 resolve_ 添加到 class 变量。
如果 Article.objects.get(category = category)
returns 想要的结果,应该可以。
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)
N.B 重命名为 category_article
因为它返回一篇文章,那么你也必须将函数重命名为 resolve_category_article
所以,最简单的方法就是使用这个 https://docs.graphene-python.org/projects/django/en/latest/filtering/。
在我的例子中,它看起来像这样:
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
在评论中提到了文档 link。
docs.graphene-python.org/projects/django/en/latest/filtering