Python Postgres序列作为Django模型字段的默认值
我有一个PostgreSQL数据库,该数据库由一个使用Django构建的前端应用程序使用,但由Node.js中的一个刮片工具填充。我已经创建了一个Python Postgres序列作为Django模型字段的默认值,python,django,postgresql,orm,Python,Django,Postgresql,Orm,我有一个PostgreSQL数据库,该数据库由一个使用Django构建的前端应用程序使用,但由Node.js中的一个刮片工具填充。我已经创建了一个序列,我想在两个不同的表/实体之间使用它,它可以通过一个函数(nexval(serial))访问,并在每次插入时调用。这不是这些表的主键,只是通过一些元数据维护顺序的一种方法。在将数据插入表的过程中,在Node.js中使用它非常简单,因为我使用的是原始SQL查询。然而,我正在努力研究如何使用Django模型来表示这一点。似乎没有任何方法将此Postgr
序列
,我想在两个不同的表/实体之间使用它,它可以通过一个函数(nexval(serial)
)访问,并在每次插入时调用。这不是这些表的主键,只是通过一些元数据维护顺序的一种方法。在将数据插入表的过程中,在Node.js中使用它非常简单,因为我使用的是原始SQL查询。然而,我正在努力研究如何使用Django模型来表示这一点。似乎没有任何方法将此Postgres函数与模型的字段相关联
问题:
有没有办法将Postgres函数用作Django模型字段的默认值?我的最终解决方案:
覆盖模型的
save
方法,使用原始查询在覆盖内选择nextval('serial'),将其设置为必要字段的值,然后在父级(super(parent,self)。save()
)上调用save
。您还可以为默认值设置自己的函数
from django.db import connection, models
def sequence_id():
with connection.cursor() as cursor:
cursor.execute("""SELECT nextval('model_someid_seq')""")
return cursor.fetchone()[0]
class MyModel(models.Model):
field_id = models.IntegerField(default=sequence_id)
您可以创建、和