33

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

4

3 回答 3

38

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

于 2010-02-16T05:22:33.237 回答
15

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

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()
于 2016-11-25T20:27:34.850 回答
4

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

例如,您有一个保存您的 CD 收藏的数据库。其中一个实体称为轨道,它包含 CD 上轨道的详细信息。这有一个 CD 名称、曲目编号的组合键。

于 2012-04-13T10:52:49.017 回答