我有一个使用 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__'
感谢您的帮助。
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__'