通过应用变音符号的文本过滤 Django 查询集

Filtering django queryset by text applying the diacritics

我正在尝试通过文本

过滤python中的查询集

型号是:

models.Offer
       id = pk           
       description = text

我正在尝试像这样过滤它:

someText = self.shave_marks(someText)
offers = offers.filter(description__icontains=someText)

其中 shave_marks 正在替换特殊字符,例如:ç 将变为 c。

数据库中的文本(描述字段)也有特殊字符,我需要的是先"shave"描述文本再过滤

任何帮助,非常感谢!!!

您可以做的是,创建一个扩展 charfield 的自定义字段。具有该字段覆盖方法 get_prep_value

我找不到具体的例子,但理论上这应该可行。

class SpecialField(models.CharField):
    def get_prep_value(self, value):
        return shave_marks(shave_marks)

这个怎么样?

offers = [(x, x.description)) for x in offers.objects.all()]

required_offers = []

for key, value in offers:
    if someText in shave_marks(value):
        required_offers.append(key)