下面给出了一个模型。
class mc(models.Model):
ap=models.CharField(max_length=50,primary_key=True)
de=models.CharField(max_length=50)
STATUS=models.CharField(max_length=12,default='Y')
class Meta:
unique_together=(("ap","de"),)
db_table='mc'
我已将 ap='1', de='2' 写入表 mc。
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 2 | Y |
+----+----+--------+
然后我试着写 ap='1' 和 de='3' 但它只是覆盖了前一个。现在表格包含
+----+----+--------+
| ap | de | STATUS |
+----+----+--------+
| 1 | 3 | Y |
+----+----+--------+
然后我尝试编写 ap='2',de='3' 及其工作。因为我给出了 unique_together,所以 ap 和 de 的组合不起作用。
但是,如果我没有对 ap 或 de 使用“primary_key”或“unique”约束,unique_together 会起作用。
你能帮帮我吗?如何在主键上使用 unique_together?
实际问题是,我有另一个类 mc1,它使用字段 ap 的外键。
class mc1(models.Model):
test=models.ForeignKey(mc,on_delete=models.CASCADE,to_field='ap')
所以 mc.ap 应该是唯一的来定义一个外键。
最佳答案
Django 不支持多列主键。一直是feature request几年来。各型号must have one primary key .
在您的情况下,如果 ap
是主键,则 ap
中的每个值都必须是唯一的。不可能同时存储 (ap=1, de=2)
和 (ap=1, de=3)
。
也许您可以添加另一个字段作为主键。然后你将能够为 ('ap', 'de')
拥有 unique_together
。
关于python - 主键和唯一约束上的 Django 模型 unique_together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44921492/