16

エラーが発生し続けます:

[u'ManagementForm data is missing or has been tampered with']

理由もわかりません。これが私の見解です:

   def CreateWorkout(request):
    WorkoutInlineFormSet = inlineformset_factory(workout,exercise)
    if request.method == "POST" : 
        formset = WorkoutInlineFormSet(request.POST)

        if formset.is_valid(): 
            formset.save(); 
    else: 
        formset = WorkoutInlineFormSet()
    return render_to_response('submit.html',{'formset': formset},context_instance=RequestContext(request))

そして、ここに私のテンプレートがあります:

<body>
<form method="POST" action ="">
{{ formset.management_form }}
<table>
 {% for form in formset.forms %}
            {{ form }}
        {% endfor %}

        </table>
</form> 
</body>

を含める必要があることを読みましたがformset.management_form、私は持っています。簡単に解決できると思っていましたが、問題がわかりませんでした。

4

3 に答える 3

7

私はこの問題に遭遇しました。

form-TOTAL_FORMS, form-INITIAL_FORMS and form-MAX_NUM_FORMS)その理由は、POSTデータに似たものがないからです。

を使用する必要が{{ formset.as_p }}あります。これにより、フォームセットから management_form データがレンダリングされます。カスタム フォームセット レンダリングを作成する場合は、フォームセットの management_form を忘れずに、POST データを mangement_form データと一緒にする必要があります。

于 2015-11-05T09:21:44.700 に答える
6

インライン フォームセットを使用する場合、オブジェクトが関連するインスタンスを提供する必要があります。

# First, fetch the instance from the db
workout = code_that_fetches_instance()

if request.method == "POST" : 
    formset = WorkoutInlineFormSet(request.POST, instance=workout)
    ...
else: 
    formset = WorkoutInlineFormSet(instance=workout)

詳細については、ビューでのインライン フォームセットの使用に関するドキュメントの例を参照してください。

workoutとがモデルの場合exerciseは、Python の慣例に従い、名前を と に変更する必要がWorkoutありExerciseます。小文字workoutは、フォームセット内のすべての演習がリンクされているインスタンスである必要があります。

于 2012-10-13T22:39:24.510 に答える
1

これを変える:

  formset = WorkoutInlineFormSet(request.POST)

これに:

 formset = WorkoutInlineFormSet(request.POST or None, request.FILES or None)
于 2019-02-01T01:10:01.000 に答える