在不使用 Relay 的情况下对石墨烯查询使用 django_filters

Meh*_*ran 9 django graphene-python

在 Django 中将石墨烯与 Relay 一起使用时,可以选择在查询数据时使用过滤。

class AnimalNode(DjangoObjectType):
    class Meta:
        model = Animal
        filter_fields = ['name', 'genus', 'is_domesticated']
        OR
        filter_fields = {
            'name': ['exact', 'icontains', 'istartswith'],
            'genus': ['exact'],
            'is_domesticated': ['exact'],
        }
        interfaces = (relay.Node, )
Run Code Online (Sandbox Code Playgroud)

是否可以在我不使用中继时以这种方式使用过滤,或者它是仅中继功能?我在石墨烯文档中没有看到对非中继的任何过滤,因此无法确定如何进行此操作。

小智 1

当然,即使您不使用 Relay,您也完全可以对 Graphene-Django 中的数据应用过滤。这里的奇特术语是filter_fields,它是一个方便的工具,可让您在请求数据时决定如何过滤内容。

就你而言,你已经有了 AnimalNode 的东西,对吗?凉爽的。

您可以告诉它要使用哪些字段进行过滤,例如“名称”、“属”和“is_domesticated”。您甚至可以花点心思并指定要如何过滤,例如“exact”、“icontains”或“istartswith”。