我需要在数据库级强制执行复合键 。复合键由五列组成。在django中,我可以使用:
执行伪复合键unique_together = ("col1", "col2", "col3", "col4", "col5")
但是,插入表中的所有数据都来自django之外的python脚本。如果未强制执行此复合主键,则该脚本将无法工作(我不想在脚本级别解决此问题)。
我将如何解决这个问题,或者django完全不可能在这里完成这个任务?
更新:我从评论中看到,在数据库级别强制执行此 。还有一种方法可以摆脱自动递增的主键吗?请注意,这些列本身都不是唯一的。
答案 0 :(得分:6)
您可以使用unique_together
。
来自unique together文档的Django文档(我的重点):
这是一系列字段列表,这些字段在一起考虑时必须是唯一的。它在Django admin 中使用,并在数据库级别强制执行(即,CREATE TABLE语句中包含相应的UNIQUE语句)。