GrapheneDjango嵌套过滤器(中继)

2024-10-16 17:19:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用graphene django的DjangoFilterConnectionField实现以下目标:

{
  allUsers(username_Icontains: "abc") {
    edges {
      node {
        id
        demographics (name_Icontains: "xyz") {
          id
          name
        }
      }
    }
  }
}

我知道在graphenedjango中,可以使用graphene's List进行嵌套过滤 但我不确定我是否能用DjangoFilterConnectionField来解决这个问题。在

我有以下石墨烯(中继)模式:

^{pr2}$

docs中,建议在连接的节点上也引入每个过滤器。所以应该是这样的:

class UserNode(DjangoObjectType):
    class Meta:
        model = User
        interfaces = (Node,)
        filter_fields = {
            'username': ['exact', 'icontains', 'in'],
            'demographic__name': ['icontains']
        }

但我认为一定有更好的方法来实现这一点,因为我必须对20多个嵌套节点执行此操作。在


Tags: djangonameid目标节点usernameclassgraphene
1条回答
网友
1楼 · 发布于 2024-10-16 17:19:07

如果你觉得这不是真的,我觉得这不是真的

想象一下,如果一个用户有一个人口统计,你检索到了诱惑者,那么对于每一个用户,我们有一个人口统计,过滤一个人口统计是不合理的。唯一的方法是用UserNode过滤它(正如您所说和所做的)

如果您有一个ForeignKey或ManyToManyField to user模型,然后您可以使用单独的过滤器在user中检索它,那么嵌套过滤就可以工作了

我希望我能让你明白

相关问题 更多 >