2010-08-26 63 views
2

我在我的Django/PostgreSQL系統上有奇怪的行爲。Django:保存後沒有pkey

保存一個模型對象後,主鍵沒有,儘管它是一個AutoField,並且該ID已正確保存在數據庫中。

a = SomModelClass() 
a.someattribute = 'xyz' 
a.save() 
a.someattribute 
>>> 'xyz' 
a.id 
>>> None 

模型類看起來在某種程度上是這樣的::

下面的腳本通道的ID返回None

class SomeModelClass(models.Model): 
    id = models.AutoField(db_column = 'id', primary_key = True) 
    someattribute = models.CharField(db_column = 'someattribute', max_length = 200) 

只有在這個模型發生此行爲;所有其他型號都能正常工作

問題出現一天而沒有改變模型結構。

也許在數據庫的數據完整性方面存在一些問題?使用其他數據庫服務器,它工作正常

此致敬禮!

回答

3

我現在解決了這個問題。序列和連續列之間的關係以某種方式被破壞。一個簡單的

ALTER SEQUENCE <<sequence_name>> OWNED_BY <<table_name>>.<<pk_column_name>> 

解決了這個問題。

此致敬禮!

+0

「OWNED_BY」必須是「OWNED BY」(無下劃線) – 2011-12-14 09:51:21

1

你可以檢查你的Postgresql日誌並找出正在被解僱的查詢嗎?這可能會提供一些線索。另外編寫一個快速的單元測試來運行相同的代碼,看看它是否工作。

+0

嗨, 感謝您的答案!我檢查了查詢並隔離了問題。以下查詢不返回任何值: SELECT CURRVAL(pg_get_serial_sequence('<<正確的表名>>','id')) – 2010-08-26 17:06:47