【发布时间】:2019-02-26 19:26:29
【问题描述】:
我一直在关注 Django 中的 Graphene-Python 文档,并且刚刚进入自定义过滤器部分。虽然提供了有关如何编写自定义过滤器的教程,但没有关于如何在 GraphiQL 中调用它们的参考。如果我有以下示例代码:
class AnimalNode(DjangoObjectType):
class Meta:
# Assume you have an Animal model defined with the following fields
model = Animal
filter_fields = ['name', 'genus', 'is_domesticated']
interfaces = (relay.Node, )
class AnimalFilter(django_filters.FilterSet):
# Do case-insensitive lookups on 'name'
name = django_filters.CharFilter(lookup_expr=['iexact'])
class Meta:
model = Animal
fields = ['name', 'genus', 'is_domesticated']
@property # make your own filter like this
def qs(self):
return super(EquityFilter, self).qs.filter(id=self.request.user)
class Query(ObjectType):
animal = relay.Node.Field(AnimalNode)
# We specify our custom AnimalFilter using the filterset_class param
all_animals = DjangoFilterConnectionField(AnimalNode,
filterset_class=AnimalFilter)
我的问题是,我需要在 GraphiQL 中输入什么内容才能使用此过滤器?非常感谢任何帮助。
【问题讨论】:
-
“使用此过滤器”是什么意思?使用上面的代码,您的查询已经在使用
AnimalFilter。你指的是如何在 GraphiQL 中指定用户? -
感谢@kirbuchi 的回复,我想我在这里误解了一些基本的东西。使用 GraphiQL,当我们使用
filter_fields = {'name': ['exact', 'icontains', 'istartswith']}等格式应用之前的过滤器时,我会在 GraphiQL 控制台中输入query {allAnimals(name_Icontains: "lion") { edges { node { id, name }}}}以使用过滤器。我的问题是,我需要在 GraphiQL 控制台中输入什么才能使用我在最初问题中发布的新创建的自定义过滤器?另外,既然你提到了它,我将如何在 GraphiQL 中指定用户?
标签: django graphql graphene-python