使用Django的复合/复合主/唯一键

时间:2010-02-16 05:11:46

标签: database django django-models many-to-many compound-key

如何使用Django创建具有复合(复合)主/唯一键的模型(以及表格)?

3 个答案:

答案 0 :(得分:32)

Django不支持复合主键。您可以使用Meta.unique_together创建单个复合唯一键。

答案 1 :(得分:5)

如果您只想使用唯一的混合字段,请使用以下代码:

class MyTable(models.Model):
    class Meta:
        unique_together = (('key1', 'key2'),)

    key1 = models.IntegerField()
    key2 = models.IntegerField()

但是如果你想要唯一的并且其中一列是主要的,请为模型列设置primary参数,类似下面的代码:

class MyTable(models.Model):
    class Meta:
        unique_together = (('key1', 'key2'),)

    key1 = models.IntegerField(primary_key=True)
    key2 = models.IntegerField()

答案 2 :(得分:2)

组合键由多个属性组成,用于唯一标识实体事件。这与复合键的不同之处在于构成键的一个或多个属性本身并不是简单的键。

例如,您有一个包含CD集合的数据库。其中一个实体称为轨道,它保存CD上轨道的细节。它有一个CD名称,轨道号的复合键。