Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
应用变音符号通过文本过滤django查询集_Django_Django Queryset_Diacritics - Fatal编程技术网

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

应用变音符号通过文本过滤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 数据库中的文本(在描述字段中)也有特殊字符,我需要的是先“

我试图用文本过滤python中的查询集

模型是:

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个参数。