应用变音符号通过文本过滤django查询集
我试图用文本过滤python中的查询集 模型是:应用变音符号通过文本过滤django查询集,django,django-queryset,diacritics,Django,Django Queryset,Diacritics,我试图用文本过滤python中的查询集 模型是: models.Offer id = pk description = text 我尝试将其过滤为: someText = self.shave_marks(someText) offers = offers.filter(description__icontains=someText) 当shave_标记替换特殊字符时,如:ç将变成c 数据库中的文本(在描述字段中)也有特殊字符,我需要的是先“
models.Offer
id = pk
description = text
我尝试将其过滤为:
someText = self.shave_marks(someText)
offers = offers.filter(description__icontains=someText)
当shave_标记替换特殊字符时,如:ç将变成c
数据库中的文本(在描述字段中)也有特殊字符,我需要的是先“刮除”描述文本,然后进行过滤
任何帮助,非常感谢 您可以做的是,创建一个扩展charfield的自定义字段。让那个字段覆盖方法 我找不到一个具体的例子,但在理论上这应该是可行的
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)
这绝对是最好的选择,因为两个字符串是否相等取决于排序规则,而排序规则实际上相当复杂,因此通过更改某些设置,它可能不再起作用。描述应该包含someText,或者它们可以相等,我真的不明白你的意思:P,请你详细说明一下!但在这种情况下,它总是会删除特殊字符吗?在某些情况下,我需要以原始语言显示描述文本,在其他情况下,我需要进行过滤!如果您重写python方法,就会发生这种情况。在保存到数据库之前进行更改。get_prep_值在从数据库获取时进行更改。我相信。我的理解是,我应该(在报价模型中)将描述字段的类型从ChartField替换为SpecialField,在这种情况下,我从数据库中检索到的任何内容(描述)都将被“剃光”?,如果我不明白,很抱歉:在某些情况下,我需要原始文本(葡萄牙语)但是,在过滤的情况下,我需要的剃文本!我得到了这个错误:TypeError:“Offer”对象不是iterablet问题在于:对于键,offeredited中的值,现在它是dict而不是tuple。应该能够工作键值类型错误:dict最多需要1个参数,得到2个参数。