2009-05-14 14 views
0

私は、フォームを複数回表示する必要があるモデルを持っています。私はモデルホルダーの下でそれを使用しました。私はモデルの主キーでもあるこのモデルのIDに問題があるようです。
私は編集したいデータでformsetをあらかじめ準備しています。
しかし、私がサブミットをクリックするたびに、このページは 'これではありません(隠しフィールドid)'というエラーメッセージが表示されます。
このエラーは、これは、テンプレートからの抜粋であるモデルFormset問題

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

隠されている「ID」フィールドに特化しています。 (私は火かき棒から持っています) フォームが無効であるために何が問題になる可能性がありますか?データを保存できません。

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')) 

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

+1

コメントにはコードを入れないでください。質問を更新してください。 –

答えて

0

私は、このエラーは、次のいずれかによって引き起こされると信じて:あなたはフォームセット内で使用しているDjangoのフォームオブジェクトモデルの主キー(id)を含んでいない

  • 。しかし、modelformset_factoryを使用しているため、このエラーメッセージは表示されません。

  • テンプレートのHTMLフォームには、プライマリキーが隠れフィールドとして含まれていません。テンプレートに{{ form.id }}などが入っていて、{{ for form in formset }}ループ内にあることを確認してください。

私は、現時点ではこれ以上の理由を考えることはできませんが、私は、彼らはすべてのバックブラウザクライアントからPOST'edフォームに関連しようとしていると確信して何とかidフィールドが欠落しています。

1

もしあなたがPostgreSQLと1.1betaより前のバージョンのDjangoを使用していて、あなたのモデルにデフォルトの順序付けが定義されていないのであれば、おそらくデータベースから返されたオブジェクトの順序の矛盾(、9758、中でも10163をDjangoのTracのチケット9076を参照してください)。

は、モデル上のデフォルトの順序を設定してみてください:それはそれを修正する場合

class Meta: 
    ordering = ('some_field',) 

を参照してください。

+0

私はジャンゴ1.1、およびMySQLを持っており、これは同様に私のためにそれを修正しました。私は抽象モデルを導入し、そこにメタを移動して、明示的にメタを継承していなかったので、実際に私はこの問題を抱えていました。 – markijbema