我正在使用django 1.6和postgressql。我正在尝试设置由名称和地址字段组成的复合唯一键。我的模特:
class MU2(models.Model):
name = models.CharField(max_length=200,default="",unique=True)
addresses = models.CharField(max_length=200,default="")
......
class Meta:
unique_together = ("name", "addresses")
在我看来:
for practice in practices:
p =MU2(**practice)
try:
p.save()
except ValidationError:
pass
复合键无效,我在名称和地址字段上都有重复记录。
我做错了什么?
答案 0 :(得分:2)
至少有三件事你“做错了”:
您的class Meta
语句严重缩进 - 它应与字段声明处于同一级别
unique_together
期待一个元组元组,而不是一个元组
你的'pass'except子句会阻止你在出现问题时获得任何有用的调试信息。并不是说它会解决你当前的问题,但它仍然是错误的......
此外,地址不是2600个字符长的“厨房水槽”位桶(它通常是带有两个或三个地址线,邮政编码,城市名称等的结构化数据类型 - 在关系模型中它可以/应该是它本身就是一个表格,而且很少有SQL数据库可以处理2600个字符长varchar
字段,我们不要谈论将它作为复合索引的一部分使用...