[英]graphene-django returns wrong filtered data
I have a DjangoObjectType and a Filterset class for my query.我有一个 DjangoObjectType 和一个 Filterset class 用于我的查询。 I have added a filter for my DjangoObjectType class as below.
我已经为我的 DjangoObjectType class 添加了一个过滤器,如下所示。
class MyFilter(FilterSet):
quantity = NumberFilter(method='filter_quantity')
def filter_quantity(self, queryset, name, value):
a_data = ClassA.objects.filter(quantity__gte=value)
a_data_keys = [data.key_number for data in a_data]
return queryset.filter(key__in=a_data_keys)
When I run my query without any filter, it works correctly and returns all the data.当我在没有任何过滤器的情况下运行查询时,它可以正常工作并返回所有数据。 However, when I run it eg with the
quantity: 1
filter, it returns data with just quantity: 1
, same as for 2. It doesn't return equal or greater
.但是,当我使用
quantity: 1
过滤器运行它时,它返回的数据只有quantity: 1
,与 2 相同。它不返回equal or greater
。 I have some data with quantity: 3
.我有一些数据,
quantity: 3
。 When I run the query with this filter and 3, it returns just quantity: 4
.当我使用此过滤器和 3 运行查询时,它只返回
quantity: 4
。 I'm really confused what's wrong with this.我真的很困惑这有什么问题。 When I print the query filter result before return, it seems correct.
当我在返回前打印查询过滤器结果时,它似乎是正确的。 But in the graphql query result dict, it's wrong.
但是在graphql查询结果dict中,是错误的。 Do you have any idea about how can I fix this weird issue?
你知道我该如何解决这个奇怪的问题吗?
It's hard to say because this is a limited snippet of the code involved, and this doesn't look wrong.很难说,因为这是所涉及代码的有限片段,而且看起来没有错。 Could it be possible that this filter is not being applied by graphene?
有没有可能这个过滤器没有被石墨烯应用? are you using a
DjangoFilterConnection
field?你在使用
DjangoFilterConnection
字段吗? Maybe you need a resolve method as follows?也许您需要如下的解决方法?
class Query(graphene.ObjectType):
filtered_stuff = DjangoFilterConnectionField(StuffType)
def resolve_filtered_stuff(self, info, **filters):
return MyFilter(filters).qs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.