這是那些健康檢查問題之一。這應該是非常明顯的。無論是司機的事情,還是我忽視了一些顯而易見的事情。Django Postgres錯誤,字段「不是字符類型」
我有一個Django模型字段。它是一個整數字段,非空,並帶有選項。
PROVENANCE_X = 0
PROVENANCE_Y = 1
PROVENANCE_CHOICES = [
(PROVENANCE_X, "Provenance X"),
(PROVENANCE_Y, "Provenance Y")
]
在模型:
provenance = models.IntegerField(choices=PROVENANCE_CHOICES, default=PROVENANCE_X)
只是爲了檢查,這裏的Postgres這樣說:
provenance | integer | not null
當我保存模型在管理我得到一個錯誤。
DatabaseError
column "provenance" is not of a character type
有沒有自定義管理員的東西。這個錯誤完全在Django代碼中,但我不知道在哪裏。我把一個斷點在save
方法只是爲了檢查,立即調用超級前:
(Pdb) print self.provenance
0
所以是一些代碼,某個地方,試圖插入一個字符,而不是一個整數?
錯誤來自django/db/backends/postgresql_psycopg2/base.py
。
在當地人該堆棧幀中的查詢變量:
'INSERT INTO "MODEL" ("A", "provenance", "B", "C") VALUES (%s, %s, %s, %s) RETURNING "MODEL"."id"'
args
(False,
0,
u'test',
'098f6bcd4621d373cade4e832627b4f6',
)
這表明查詢生成接收到正確的參數(0)。注意'%s'不是標準格式的佔位符,因爲Django查詢編譯器%s
是唯一的類型。
所以這一切看起來是正確的。
發生了什麼事?
我已經在'MySQL'和'PostgreSQL'中實現了模型,並且能夠保存'ModelForm'沒有任何錯誤:O –
是的,表單已經工作過。某處發生了某些變化,我試圖診斷出什麼。我已經重新安裝最新的Django 1.3 – Joe