问题描述
我有一个模态,其字段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 (将#修改为@)