使用django-filter,我有以下FilterSet:
class MyFilter(django_filters.FilterSet):
name = django_filters.CharFilter(name='full_name')
class Meta:
model = MyModel
fields = ['name',]
order_by_field = 'order'
order_by = ('name',)
如您所见,我已经将该字段命名为full_name
,以便它在表的full_name
列上进行筛选。但是,一旦我将order_by
设置为name
,就会出现以下错误:
无法将关键字“名称”解析为字段。选择是:..。
它使用?name=Jon%20Doe
进行过滤,但排序不起作用。有什么问题吗?
发布于 2014-11-27 22:46:17
根据通过上的文档,您必须使用模型中的字段名,而不是过滤器字段名。在您的例子中,我只使用full_name
,它位于模型上:
class MyFilter(django_filters.FilterSet):
name = django_filters.CharFilter(name='full_name')
class Meta:
model = MyModel
fields = ['name',]
order_by_field = 'order'
order_by = ('full_name',)
如果您查看代码:过滤器/过滤器#L 326-L 339,您将看到如果您声明了一个order_by字段,它会循环遍历表单字段(从模型生成),然后使用该值作为QuerySet上的order_by的参数。
如果有的话,文档应该更明确地说明这一事实。
https://stackoverflow.com/questions/27183185
复制