如何允许石墨烯GraphQl中的任何字段过滤

Posted

技术标签:

【中文标题】如何允许石墨烯GraphQl中的任何字段过滤【英文标题】:How to allow any field filtering in graphene GraphQl 【发布时间】:2021-10-29 09:03:55 【问题描述】:

我想知道,是否有办法在石墨烯 GraphQl 解析器中传递更多要查询的参数。

因此,此代码仅适用于 wgr_bez

class GraphqlService(graphene.ObjectType):
    get_single_article = graphene.Field(ArticleGrapheneModel, wgr_bez=graphene.String)


    @staticmethod
    async def resolve_get_single_article(parent, info, **kwargs):
        article = await info.context['request'].state.db.select_article_with_filter(kwargs)
        return article[0][0].to_json()

使用 **kwargs 我可以从请求中获取任何列:值对,但是如何传递任何列:值,我不明白。

我希望能够用更通用的东西或至少是字典来替换它。我在文档中看到了它,但是当我这样做时出现错误:

get_single_article = graphene.Field(ArticleGrapheneModel, 'wgr_bez': graphene.String, 'id': graphene.Int)

ValueError: Unknown argument "wgr_bez".

【问题讨论】:

【参考方案1】:

我找到了答案,需要如下定义参数:

get_single_article = graphene.Field(ArticleGrapheneModel, args='wgr_bez': graphene.Argument(graphene.String),
                                                                'id': graphene.Argument(graphene.Int))

【讨论】:

以上是关于如何允许石墨烯GraphQl中的任何字段过滤的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖石墨烯中的 DjangoModelFormMutation 字段类型?

如何在石墨烯烧瓶中进行多个查询过滤器?

如何解决具有多对多关系的石墨烯 django 节点字段

与石墨烯后端反应阿波罗中 graphql 接口类型的常见字段

Python GraphQL 如何声明一个自引用的石墨烯对象类型

石墨烯突变返回 400 - 不会正确传递 id 字段