我有一个PSQL数据库,每天都有投资组合及其价值观。 我正在使用Django来开发一个Web应用程序。我用这个链接: https://docs.djangoproject.com/en/1.10/howto/legacy-databases/
为Django生成模型。我没有在我的数据库或models.py文件中明确定义主键。是否有必要定义主键以便从数据库中检索数据?
如果是这样,有没有办法让多个字段成为主键?在这种情况下,它必须是投资组合ID和日期,因为有多个投资组合和日期。
感谢您的帮助!
答案 0 :(得分:2)
没有必要在代码中定义primary key
。默认情况下,它由django照顾。它创建名为id
的变量作为主键。
但是,您可以使用primary_key = True
选项明确定义主键。
实施例
key1 = models.IntegerField(primary_key=True)
如果要定义复合主键,则可以查看此问题How to create composite primary key
希望这有帮助!
答案 1 :(得分:1)
默认情况下,django为每个表创建一个名为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<table id="table">
<tbody></tbody>
</table>
的列,即PK。
您可以使用id
使用自己的PK。
此外,您可以使用primary_key=True
Meta选项,但仍需要将另一列用作PK。
如果您想要使用复合主键,则需要使用其他第三方解决方案。
答案 2 :(得分:1)
我遇到了同样的问题,并通过如下所示用AutoField替换IntegerField来解决此问题,
order_id = models.IntegerField(primary_key=True)
作者
order_id = models.AutoField(primary_key=True)
它奏效了!
答案 3 :(得分:0)
PostgreSQL 不做自动 pk 字段。所以你需要手动制作。
models.py
test = models.AutoField(primary_key=True)
你不需要 unique=True,因为 pk 总是唯一的 或者您可以使用它来生成自动 pk 字段
settings.py
DEFAULT_AUTO_FIELD='django.db.models.AutoField'