だから私は周りを見回しましたが、この一見一般的なエラーを引き起こさなければならないという同じ問題を誰も抱えていないようです。次のように、html でいくつかのフォームをレンダリングしています。
<form method="post" action="">
{{ tags_formset.management_form }}
<!-- code displaying this formset -->
...
<!-- -->
<form method="post" action="">
{{ add_all_form.management_form }}
{{ add_all_form.addTagsToAll }}
<input type="submit" value="Add To Displayed Applicants" />
</form>
<form method="post" action="">
{{ remove_all_form.management_form }}
{{ remove_all_form.removeTagsFromAll }}
<input type="submit" value="Remove From Displayed Applicants" />
</form>
<input type="submit" value="Save Changes" />
</form>
2 つの内部フォームがなかった場合、フォームセットが正しく表示され、送信ボタンが機能してフォームを送信します。2 番目の 2 つのフォームを追加すると、いくつかの問題が発生しました。
-送信ボタンが機能しなくなりました (ただし、フォームセットのフィールドの 1 つが選択されているときに Enter キーを押すと、フォームは送信されます)
- add_all_form の送信が機能し、適切に機能します (問題ではありませんが、次の点に関して興味深い...)
-remove_all_form は、「ManagementForm データが見つからないか、改ざんされています」という検証エラーによって機能しません。
フォームを作成する views.py コードは次のとおりです。
TagsFormSet = formset_factory(TagsForm, formset=TagFormSet, extra=applicantQuery.count())
if request.method == 'POST':
tags_formset = TagsFormSet(request.POST, request.FILES, prefix='tags', applicants=applicantQuery)
add_all_form = TagAddAllForm(request.POST, request.FILES, prefix='addForm', applicants=applicantQuery)
remove_all_form = TagRemoveAllForm(request.POST, request.FILES, prefix='removeForm', applicants=applicantQuery)
redirect = False
if tags_formset.is_valid():
for tagForm in tags_formset.forms:
if 'tags' in tagForm.cleaned_data:
tagForm.saveTags()
if 'removeTags' in tagForm.cleaned_data:
tagForm.deleteTags()
redirect = True
if add_all_form.is_valid():
if 'addTagsToAll' in add_all_form.cleaned_data:
add_all_form.saveTagsToAll()
redirect = True
if remove_all_form.is_valid():
if 'removeTagsFromAll' in remove_all_form.cleaned_data:
remove_all_form.deleteTagsFromAll()
redirect = True
if redirect:
return http.HttpResponseRedirect('')
else:
initForms = []
tags_formset = TagsFormSet(prefix='tags', applicants=applicantQuery)
add_all_form = TagAddAllForm(prefix='addForm', applicants=applicantQuery)
remove_all_form = TagRemoveAllForm(prefix='removeForm', applicants=applicantQuery)
私は文字通り何が間違っているのか理解できません。remove_all_form が機能しないのに add_all_form が機能する理由はわかりません。基本的に関連するすべてのものをコピーして貼り付けているためです (必要な場合は Forms.py ファイルからコードを投稿できますが、問題はないと思います.. .)
助けてください!