Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Postgres序列作为Django模型字段的默认值_Python_Django_Postgresql_Orm - Fatal编程技术网

Python Postgres序列作为Django模型字段的默认值

Python Postgres序列作为Django模型字段的默认值,python,django,postgresql,orm,Python,Django,Postgresql,Orm,我有一个PostgreSQL数据库,该数据库由一个使用Django构建的前端应用程序使用,但由Node.js中的一个刮片工具填充。我已经创建了一个序列,我想在两个不同的表/实体之间使用它,它可以通过一个函数(nexval(serial))访问,并在每次插入时调用。这不是这些表的主键,只是通过一些元数据维护顺序的一种方法。在将数据插入表的过程中,在Node.js中使用它非常简单,因为我使用的是原始SQL查询。然而,我正在努力研究如何使用Django模型来表示这一点。似乎没有任何方法将此Postgr

我有一个PostgreSQL数据库,该数据库由一个使用Django构建的前端应用程序使用,但由Node.js中的一个刮片工具填充。我已经创建了一个
序列
,我想在两个不同的表/实体之间使用它,它可以通过一个函数(
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)
您可以创建、和