これは、健全性チェックの質問の 1 つです。これは非常に明白なはずです。ドライバーに何か問題があるか、明らかな何かを見落としています。
Django モデル フィールドがあります。これは、null 以外の整数フィールドで、選択肢があります。
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
が唯一のタイプであるためです。
したがって、すべて正しいように見えます。
どうしたの?