Django ORM unique_together无效

时间:2014-07-28 20:14:16

标签: python django postgresql

我正在使用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

复合键无效,我在名称和地址字段上都有重复记录。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

至少有三件事你“做错了”:

  1. 您的class Meta语句严重缩进 - 它应与字段声明处于同一级别

  2. unique_together期待一个元组元组,而不是一个元组

  3. 你的'pass'except子句会阻止你在出现问题时获得任何有用的调试信息。并不是说它会解决你当前的问题,但它仍然是错误的......

  4. 此外,地址不是2600个字符长的“厨房水槽”位桶(它通常是带有两个或三个地址线,邮政编码,城市名称等的结构化数据类型 - 在关系模型中它可以/应该是它本身就是一个表格,而且很少有SQL数据库可以处理2600个字符长varchar字段,我们不要谈论将它作为复合索引的一部分使用...