Django:相同的文本在二进制级别上并非唯一

问题描述

我有一个模态,其字段my_field必须是唯一的。我将通过检查实体是否已经存在来检查是否必须稍后执行任务:

class MyModel(models.Model):
    my_field = models.CharField(max_length=75,unique=True)

后来:

if MyModel.objects.filter(my_field=my_value).exists():
     pass # execute task and save it under the value name in question
else:
     pass

我需要在此处比较的值是通过两个不同的第三方API收到的。现在,我遇到了一个问题,即“ 人类可读相同文本没有被检测为相同,这使得唯一属性失败(在某种意义上,它不会让保存失败),当然还有“它是否存在?检查”。

所以过了一会儿,我侵入了django shell,并将其中两个值转换为二进制代码,这样它们就不一样了。

所以我读到有关规范化的内容,并提出了以下内容:

class MyModel(models.Model):
    ...
    def save(self,*args,**kwargs):
        if self.pk is None:
            self.my_field = unicodedata.normalize('NFC',self.my_field)
    ...

在查询数据库之前,我以相同的方式对接收到的值进行规范化。 仍然我的实例具有相同的“人类可读文本”,但是二进制代码不同,问题仍然存在。

如何以可以确保不存在相同TEXT的方式保存值(如“ hello world”之类的文本)?

我们非常感谢您的帮助!

编辑:如果感兴趣,我正在使用PostgreSQL。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)