我有一个PostgreSQL数据库,由使用Django构建的前端应用程序使用,但由Node.js中的抓取工具填充。我已经在两个不同的表/实体中使用了sequence
,可以通过函数(nexval(serial)
)访问它,并在每个插入时调用。这不是这些表的主键,而只是通过某些元数据维护顺序的一种方法。在将数据插入表格期间在Node.js中使用它是微不足道的,因为我正在使用原始SQL查询。但是,我正在努力解决如何使用Django模型来表示这一点。似乎没有任何方法可以将此Postgres函数与模型的字段相关联。
问题: 有没有办法使用Postgres函数作为Django模型字段的默认值?
答案 0 :(得分:1)
我的最终解决方案:
覆盖模型的save
方法,使用覆盖内的SELECT nextval('serial')
原始查询,将其设置为必要字段的值,然后在父级上调用save
( super(PARENT, self).save()
)。
答案 1 :(得分:0)
您还可以为default
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)