我有一个具有复合主键的旧式数据库表。我认为我无法更改结构以包含代理键,因为编写了一些使用该表的代码。在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字段)唯一的字段,并且显然失败。