Django -在django-filters库中使用postgres unaccent

g2ieeal7  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(126)

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

>>> 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__'


多谢帮忙。

bakd9h0s

bakd9h0s1#

如果有人有同样的问题,请回答这个问题。事实证明,这比我想象的要简单得多。通过在查找表达式之前添加 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__'

字符串

相关问题