使用Django rest框架是否可以通过first_name
进行case-insensitive
排序。在
代码如下:
import django_filter
class PersonFilter(django_filters.FilterSet):
class Meta:
model = Person
fields = ('first_name_lower',)
order_by = ('first_name_lower',)
class PersonViewSet(BaseModelViewSet):
queryset = Person.objects.all()
permission_classes = (permissions.IsAuthenticated,)
filter_backends = (filters.DjangoFilterBackend,)
filter_class = PersonFilter
有没有一种简单的方法可以用django-filter
进行case-insensitive
排序?在
Heredjango filter有文档用于不区分大小写的搜索,但没有用于排序的文档。在
在Django文档中,代码对此有些迟钝,这让我怀疑它是否存在于django-filter
中。下面是关于如何使用Django ORM的Django docs代码片段:
可以通过重写
ModelViewSet
类上的get_queryset
方法来完成case-insensitive
搜索。在它适用于降序和升序
case-insensitive
排序。在代码如下:
^{pr2}$from django.db.models.functions import Lower
只对升序有效,所以如果需要降序,基本上可以调用.reverse()
。在您可能希望将
OrderingFilter
子类化,并将其用作您的filter_backend
,以便可以重用代码。在您可以替换
OrderingFilter
的filter
函数,并在Lower
中设置排序参数:相关问题 更多 >
编程相关推荐