Django - 将 postgres unaccent 与 django-filters 库一起使用

问题描述 投票:0回答:1

我有一个使用 postgres 的 Django 应用程序。我知道,如果我在数据库中安装了来自 postgres 的unaccent扩展,我可以像文档中描述的那样使用来应用过滤器,忽略单词中的重音:

>>> City.objects.filter(name__unaccent="México") ['<City: Mexico>'] >>> User.objects.filter(first_name__unaccent__startswith="Jerem") ['<User: Jeremy>', '<User: Jérémy>', '<User: Jérémie>', '<User: Jeremie>']
在此应用程序中,我还使用 

django-filter 库。我想知道是否有一种方法可以将 unaccent 扩展与 django-filter 结合使用,以避免重写我的所有搜索函数。以下是用于过滤的代码示例:

class BranchesFilter(django_filters.FilterSet): name = CharFilter( label='Filial', label_suffix='', field_name='name', lookup_expr='icontains', ) class Meta: model = Branches fields = '__all__'
感谢您的帮助。

django django-filter
1个回答
0
投票
回复这个以防万一有人有同样的问题。事实证明这比我想象的要简单得多。通过在查找表达式之前添加

unaccent__ (就像文档中描述的那样),该扩展可以与 django-filters 一起使用。这是问题中提供的示例:

class BranchesFilter(django_filters.FilterSet): name = CharFilter( label='Filial', label_suffix='', field_name='name', lookup_expr='unaccent__icontains', ) class Meta: model = Branches fields = '__all__'
    
© www.soinside.com 2019 - 2024. All rights reserved.