在django中强制复合多个键

时间:2012-01-23 19:07:08

标签: python mysql sql django database-design

我需要在数据库级强制执行复合键 。复合键由五列组成。在django中,我可以使用:

执行伪复合键
unique_together = ("col1", "col2", "col3", "col4", "col5")

但是,插入表中的所有数据都来自django之外的python脚本。如果未强制执行此复合主键,则该脚本将无法工作(我不想在脚本级别解决此问题)。

我将如何解决这个问题,或者django完全不可能在这里完成这个任务?

更新:我从评论中看到,在数据库级别强制执行此 。还有一种方法可以摆脱自动递增的主键吗?请注意,这些列本身都不是唯一的。

1 个答案:

答案 0 :(得分:6)

您可以使用unique_together

来自unique together文档的Django文档(我的重点):

  

这是一系列字段列表,这些字段在一起考虑时必须是唯一的。它在Django admin 中使用,并在数据库级别强制执行(即,CREATE TABLE语句中包含相应的UNIQUE语句)。