我尝试将django-filter的DateTimeFromToRangeFilter示例与自定义FilterSet
结合使用。但是,当我尝试执行以下操作时,这并不起作用:
class CustomFilterSet(FilterSet):
modified = django_filters.IsoDateTimeFromToRangeFilter()
class Meta:
fields = "__all__"
model = Custom
这不会导致创建额外的字段或注解,就像我期望的那样。例如:
f = F({'modified_after': '...', 'modified_before': '...'})
如果我检查添加到DjangoFilterConnectionField的单个字段(modified
),我会看到以下内容:
{'creation_counter': 395, 'name': None, '_type': <String meta=<ScalarOptions name='String'>>, 'default_value': Undefined, 'description': None, 'deprecation_reason': None}
那么,我如何配置这个过滤器,这样我就可以写一个像下面这样的查询?
query {
allTheSmallThings(
modified_before: "2023-09-26 17:21:22.921692+00:00"
) {
edges {
node {
id
}
}
}
}
更新:我可以确认我能够使用文件中的FilterSet子类。这个问题似乎与石墨烯生成/不生成的字段有关。
1条答案
按热度按时间nkkqxpd91#
要在Graphene-Django中使用自定义FilterSet过滤DateTime字段,您可以按照以下步骤操作:
1.在自定义FilterSet类中使用django-filter中的IsoDateTimeFromToRangeFilter定义自定义DateTime过滤器字段。
1.确保您定义的过滤器字段名称与您将在GraphQL查询中使用的名称匹配。
1.确保您的GraphQL schema正确包含自定义FilterSet和字段名称。
下面是如何修改代码来实现这一点:
假设你有一个名为Custom的模型,下面是你如何定义一个自定义的FilterSet并将其集成到你的GraphQL模式中:
有了这个设置,你可以在GraphQL查询中使用modified_before和modified_after过滤器,如下所示:
请确保调整CustomFilterSet中的field_name和lookup_expr值,以匹配模型的字段名称和要应用的过滤条件。
此外,确保您已经导入了必要的模块并正确设置了GraphQL模式。