【问题标题】:Primary Key Django Model - PSQL Database主键 Django 模型 - PSQL 数据库
【发布时间】:2017-06-10 10:25:09
【问题描述】:
【问题讨论】:
标签:
python
django
postgresql
django-models
【解决方案1】:
PostgreSQL 不生成自动 pk 字段。所以你需要手动制作。
models.py
test = models.AutoField(primary_key=True)
你不需要 unique=True,因为 pk 总是唯一的
或者您可以使用它来生成自动 pk 字段
settings.py
DEFAULT_AUTO_FIELD='django.db.models.AutoField'
【解决方案2】:
我遇到了同样的问题,通过用 AutoField 替换 IntegerField 解决了,如下所示,
order_id = models.IntegerField(primary_key=True)
通过
order_id = models.AutoField(primary_key=True)
成功了!!
【解决方案3】:
没有必要在您的代码中定义primary key。默认情况下,它由 django 处理。它创建名为id 的变量作为主键。
但是您可以使用primary_key = True 选项显式定义主键。
示例。
key1 = models.IntegerField(primary_key=True)
如果你想定义复合主键,那么你可以看看这个问题How to create composite primary key
希望这会有所帮助!
【解决方案4】:
默认情况下,django 为每个表创建了一个名为id 的列,即PK。
您可以通过primary_key=True 使用自己的PK。
另外,您可以使用unique_together Meta 选项,但您仍然需要使用另一列作为PK。
如果你想要使用复合主键,你需要使用另一个第三方解决方案。