私は本当に奇妙なデータベースエラーを取得しています(ただし、はMAX_LENGTH限度内にあることが表示されます)私の調査アプリ。奇妙なことは:私はそのフィールドに4文字を保存しようとしていると信じています!ジャンゴあまりにも様々な種類の文字の長い値
.save(update_fields=['question_type', 'question_text', 'quota'])
呼び出しはのModelFormの検証に合格したので、私はそれが実際にモデルにマッチしたかどうかを確認するために私のデシベルに行き、それがない:
db=# \d surveyapp_question;
Table "public.surveyapp_question"
Column | Type | Modifiers
---------------+------------------------+-----------
uuid | uuid | not null
question_type | character varying(4) | not null
question_text | character varying(255) |
order | integer |
quota | smallint |
あなたが見ることができるように、一つだけvarchar(4)
がモデルにあります。 question_type
。その列に保存しようとしている値は "text
"です。 POSTデータには「テキスト」が表示されます。 をform_valid
に入れた場合はtext
と表示されます。
だから私はpostgresのを見ては、ログ:
tail -f /var/log/postgresql/postgresql-9.4-main.log
...
UPDATE "surveyapp_question" SET "question_type" = '(''text'',)' WHERE...
をすっごく...それは右見ていないのですか? 「''text''
」とは何ですか?なぜそのタプルに"text"
がないのですか?それがエラーの原因ですか?
私はdjango 1.10、psycopg2 2.6.2、PostgreSQL 9.4.7を実行しています。
self.question.some_property = form.cleaned_data['some_property'],
私は偶然末尾のカンマを付加し、それが何らかの形で私の特定のコードの構文エラーは発生しませんでしたが、危険なクエリとしてデータベースに右psycopg2を経て:
フォームを表示し、表示し、モデル化できますか? –
Timmyを提案してくれてありがとう - 私は公衆の見解のために 'view'をサニタイズしていたときに、' self 'のプロパティを設定していた行に後続のカンマが追加されていることに気づいた。どのように地球上でdodgy SQLに変換される私の外です! – Escher