是否可以编写一个Django模型,其中一个字段使用Postgresql函数作为其默认值?这是一个使用txid_current()作为默认值的简单示例:
% psql mydb=# CREATE TABLE test ( label text default '',txid BIGINT DEFAULT txid_current() ); CREATE TABLE mydb=# \d test Table "public.test" Column | Type | Modifiers --------+--------+------------------------ label | text | default ''::text txid | bigint | default txid_current() mydb=# INSERT INTO test (label) VALUES ('mylabel'); INSERT 0 1 mydb=# select * from test; label | txid ---------+-------- mylabel | 192050 (1 row)
该表的Django模型可能看起来像
class Test(models.Model): label = TextField('Label',default='') txid = BigIntegerField('txid',default=???)
解决方法
您可以将可调用指定为“默认”
https://docs.djangoproject.com/en/dev/ref/models/fields/#default
https://docs.djangoproject.com/en/dev/ref/models/fields/#default
让你的callable执行原始sql来获取你所追求的值
https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly
关于你的txid_current(),请务必阅读
https://docs.djangoproject.com/en/dev/topics/db/transactions/#django-s-default-transaction-behavior
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。