繁体   English   中英

graphene-django 中的自定义参数

[英]A custom argument in graphene-django

如何使用 graphene-django 在 GraphQL 中创建自定义参数?

我目前在我的 schema.py 中有这个配置:

class Post(DjangoObjectType):
    class Meta:
        model = FeedPost
        interfaces = (graphene.relay.Node,)
        filter_fields = ['id']

class Query(graphene.ObjectType):
         post = graphene.Node.Field(Post)

    def resolve_post(self, info, **kwargs):
        username = kwargs.get('username')
        u = User.objects.get(username=username) 
        users_sources = FeedSource.objects.filter(user=u)
        return FeedPost.objects.filter(feed__feedsource__in=users_sources).annotate(
             source_title=F('feed__feedsource__title')
    )
schema = graphene.Schema(query=Query)

但是我一直无法弄清楚如何在“post”的实际 GraphQL 查询中使“username”成为必需的参数。

不确定之前是否支持,但我使用的是graphene-django>=2.15,<2.16 ,我可以确认以下语法按预期工作:

class Query(graphene.ObjectType):

    # Notice the username argument
    post = graphene.Field(Post, username=graphene.String(required=True, default=None))

    def resolve_post(self, root, info, username): # Notice: the username argument spelled exactly as before
        u = User.objects.get(username=username) 
        users_sources = FeedSource.objects.filter(user=u)
        return FeedPost.objects.filter(feed__feedsource__in=users_sources).annotate(
             source_title=F('feed__feedsource__title')
    )

GraphiQL 也正确处理它: 带参数的GraphiQL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM