0

フォームを複数回表示する必要があるモデルがあります。私はそれをmodelformsetの下で使用しました。モデルの主キーでもあるこのモデルのIDに問題があるようです。
編集したいデータをフォームセットに事前入力します。
ただし、[送信]をクリックすると、ページが更新され、「(非表示フィールドID)このNoneは既に存在します」というエラーが表示されます。
このエラーは、特に非表示の「id」フィールドで発生します

<input type="hidden" id="id_form-0-id" value="2972" name="form-0-id"/>

これはテンプレートのスニペットです。(firebugから入手しました)フォームが無効であるために問題が発生する可能性があります。データを保存できません。

ProfilesFormSet = modelformset_factory(Profile,exclude = ( <items spearated by commas>), extra=0) 
profile_form_set = ProfilesFormSet(queryset = Profile.objects.filter(userprofile=userprofile).order_by('-modified_on')) 

これはコードスニペットです。

4

2 に答える 2

1

PostgreSQL と 1.1beta より前のバージョンの Django を使用していて、モデルにデフォルトの順序付けが定義されていない場合、データベースから返されるオブジェクトの順序付けに一貫性がないことに関連するバグがおそらく見られると思います (Django Trac を参照)。チケット9076975810163など)。

モデルにデフォルトの順序を設定してみてください:

class Meta:
    ordering = ('some_field',)

それが修正されるかどうかを確認してください。

于 2009-05-14T21:24:57.220 に答える
0

このエラーは、次のいずれかが原因であると考えています。

  • フォームセット内で使用している Django フォーム オブジェクトには、モデルの主キー (id) が含まれていません。ただし、modelformset_factory を使用しているため、これは当てはまりません (エラー メッセージも表示されません)。

  • テンプレートの HTML フォームには、隠しフィールドであっても主キーが含まれていません。ループ{{ form.id }}内のテンプレートにまたはそのようなものがあることを確認してください。{{ for form in formset }}

現時点ではこれ以上の理由は思いつきませんが、それらはすべて、ブラウザ クライアントから POST されたフォームに何らかの理由で id フィールドが欠落していることに関連していると確信しています。

于 2009-05-14T20:50:29.330 に答える