2012-06-03 58 views
0

我无法让Django(1.5)在3列上创建MySQL UNIQUE索引,尽管我遵循了我在SO上找到的所有建议。以下是我的模型的样子:Django unique_together无法正常工作

class Loc(models.Model): 
    rand = models.IntegerField() 
    sectiune = models.ForeignKey(Sectiune) 
    numar = models.IntegerField() 
    pret = models.FloatField() 

    def __unicode__(self): 
     return str(self.sectiune.nume) + ': R' + str(self.rand) + ' L' +  str(self.numar) 

    class Meta: 
     unique_together = (("rand","sectiune","numar"),) 

我真的不明白什么是错的。我见过一个错误报告,unique_together在外键上不起作用,但我也看到这个问题已得到解决。任何帮助?

+0

您是否尝试过使用列名称而不是字段名称? –

+0

不起作用,它给了我一个错误:“unique_together”指的是'sectiune_id',一个不存在的字段。 –

回答

1

原来Django并不是那么聪明......它不知道如何用ALTER表创建UNIQUE约束。我只需要删除表,再次运行syncdb,并且约束在那里:)

+3

你可能想看看Django South。处理数据库迁移要好得多。 –

+0

@MikeDeSimone当时肯定错过了你的评论,但是是的,South做到了这一点(现在Django 1.7的移植系统也是如此)。 –