应用变音符号通过文本过滤Django queryset

时间:2018-06-27 16:55:49

标签: django django-queryset diacritics

我正在尝试通过文本过滤python中的查询集

模型是:

models.Offer
       id = pk           
       description = text

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

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

在shave_marks替换特殊字符的地方,例如:ç将变为c。

数据库中的文本(在描述字段中)也具有特殊字符,我需要的是先“刮掉”描述文本,然后进行过滤。

任何帮助,非常感谢!!

2 个答案:

答案 0 :(得分:1)

这个怎么样?

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)

答案 1 :(得分:0)

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

我找不到具体的例子,但是从理论上讲应该可以。

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