2011-11-11 61 views
4

是否可以使用PostgreSQL函數作爲其缺省值編寫Django模型?下面是使用txid_current()作爲默認值一個簡單的例子:如何使用PosgreSQL函數將Django模型字段定義爲默認值

% 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=???) 

是否有指定的數據庫功能作爲默認值的方式或在運行syncdb之後,我需要在PostgreSQL中添加默認的單獨步驟嗎?

回答

3
+0

如何獲取我應該用來執行該功能的數據庫? – DataGreed

0

你必須自己做SQL。 Django不支持這一點。它是數據庫獨立性的一個特徵。

+0

謝謝。我只使用過Django的PostgreSQL,但知道MySQL和sqlite都有功能。我現在看到MySQL不允許將函數作爲默認值,所以我的例子確實是PostgreSQL特有的。能夠傳遞一些額外的細節以插入到CREATE TABLE語句中,這取決於您的後端能夠理解,似乎是合理的。 – David

相關問題