繁体   English   中英

graphene-django 返回错误的过滤数据

[英]graphene-django returns wrong filtered data

我有一个 DjangoObjectType 和一个 Filterset class 用于我的查询。 我已经为我的 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)

当我在没有任何过滤器的情况下运行查询时,它可以正常工作并返回所有数据。 但是,当我使用quantity: 1过滤器运行它时,它返回的数据只有quantity: 1 ,与 2 相同。它不返回equal or greater 我有一些数据, quantity: 3 当我使用此过滤器和 3 运行查询时,它只返回quantity: 4 我真的很困惑这有什么问题。 当我在返回前打印查询过滤器结果时,它似乎是正确的。 但是在graphql查询结果dict中,是错误的。 你知道我该如何解决这个奇怪的问题吗?

很难说,因为这是所涉及代码的有限片段,而且看起来没有错。 有没有可能这个过滤器没有被石墨烯应用? 你在使用DjangoFilterConnection字段吗? 也许您需要如下的解决方法?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM