Django中的复合主键

我有一个具有复合主键的旧式数据库表。我认为我无法更改结构以包含代理键,因为编写了一些使用该表的代码。在django中,我无法使用该表,因为它没有主键(非复合键)。

Django模型是否支持复合主键?如果不是,是否有任何解决方法而不更改表的结构?

PS我正在使用PostgreSQL。

回答:

试试下面类似的代码:

class MyTable(models.Model):

class Meta:

unique_together = (('key1', 'key2'),)

key1 = models.IntegerField(primary_key=True)

key2 = models.IntegerField()

或者,如果你只想要唯一的混合字段:

class MyTable(models.Model):

class Meta:

unique_together = (('key1', 'key2'),)

key1 = models.IntegerField()

key2 = models.IntegerField()

编辑:我想指出,如果有3列,则此方法存在问题。更新查询不起作用,因为它尝试更新(唯一设置在“ SET”之后的pk字段)唯一的字段,并且显然失败。

以上是 Django中的复合主键 的全部内容, 来源链接: utcz.com/qa/427725.html

回到顶部