【问题标题】:graphene-django custom get_queryset of DjangoObjectType does not workDjangoObjectType 的 graphene-django 自定义 get_queryset 不起作用
【发布时间】:2019-07-08 12:35:49
【问题描述】:

在官方文档中:https://docs.graphene-python.org/projects/django/en/latest/queries/#default-queryset。在实践中什么都没有发生。请帮忙。下面,例如,我只有简单的部分代码,模型联系人有 3 个字段(id、种类、值)。我希望始终使用 kind='PHONE' 过滤 ContactType。

class ContactType(DjangoObjectType):
    class Meta:
        model = Contact

    @classmethod
    def get_queryset(cls, queryset, info):
        return queryset.filter(kind='PHONE')

class ContactQuery(graphene.ObjectType):
    contacts = graphene.List(ContactType)

    def resolve_contacts(self, info, **kwargs):
        return Contact.objects.all()

查询:

{
    contacts {
        id
        kind
        value
    }
}

返回:

{
  "data": {
    "contacts": [
      {
        "id": "1",
        "kind": "INSTAGRAM",
        "value": "technodomkz"
      },
      {
        "id": "3",
        "kind": "YOUTUBE",
        "value": "UCF-HjvMMvgnhXhO4shk9i9Q"
      },
      {
        "id": "4",
        "kind": "FACEBOOK",
        "value": "technodomkz"
      },
      {
        "id": "5",
        "kind": "TWITTER",
        "value": "technodom_kz"
      },
      {
        "id": "6",
        "kind": "PHONE",
        "value": "88000801111"
      },
      {
        "id": "7",
        "kind": "PHONE",
        "value": "87272799999"
      },
      {
        "id": "8",
        "kind": "EMAIL",
        "value": "callcenter@technodom.kz"
      },
      {
        "id": "2",
        "kind": "WEBSITE",
        "value": "www.technodom.kz"
      }
    ]
  }
}

代替:

{
  "data": {
    "contacts": [
      {
        "id": "6",
        "kind": "PHONE",
        "value": "88000801111"
      },
      {
        "id": "7",
        "kind": "PHONE",
        "value": "87272799999"
      }
    ]
  }
}

【问题讨论】:

  • 欢迎来到 Stack Overflow。你能具体说明你的问题吗?例如,您可以添加一些上下文并向我们展示您对这个错误负责的代码。
  • 感谢@louisfischer 的反馈。我用更多信息更新了问题

标签: graphene-django


【解决方案1】:

对于任何寻找此问题答案的人,答案是here

尝试将 List 换成 DjangoConnectionField。 看起来我们需要记录 get_queryset 与 DjangoConnectionField 一起使用,并且像 List 这样的非中继字段没有相同的魔力。

【讨论】:

  • DjangoListField 也可以工作,但没有中继规范:“DjangoConnectionField 的行为与 DjangoListField 类似,但根据中继规范返回分页连接”
猜你喜欢
  • 2013-05-04
  • 2022-07-30
  • 2019-04-26
  • 2020-09-09
  • 2020-07-28
  • 2015-03-25
  • 2015-09-13
  • 2013-07-21
  • 2014-01-02
相关资源
最近更新 更多