私は本当にDjangoの新機能です!私はそれらの隣にチェックボックスがある項目を表示するページを持っています。アイテム/チェックボックスの数はさまざまです。ボタンを押すと、対応するチェック項目が変更されます。複数のチェックボックスを持つDjangoフォーム
はこれまでのところ、私は1つの形でそれをすべてをラップしようとしている:
<form method="post">
{% csrf_token %}
{% for event in items %}
{{ event.eventID }}
<input type="checkbox" value="{{ event.eventID }}" name="choices">
{% endfor %}
<button type="submit">Approve</button>
</form>
私はDjangoのフォームフィールドでそれらを収集します。私はModelMultipleChoiceFieldを使用しようとしています:
class ApproveEventForm(forms.Form):
choices = forms.ModelMultipleChoiceField(queryset = Event.objects.all(), widget=forms.CheckboxSelectMultiple())
そして、私の意見では、私が選択した項目を編集したい:
def approve_event(request):
if request.method == "POST":
form = ApproveEventForm(request.POST)
print(form.errors)
if form.is_valid():
for item in form.cleaned_data['choices']:
item.approved = True
item.save()
else:
form = ApproveEventForm()
unapproved = Event.objects.filter(approved=False)
return render(request, 'app/approve_event.html', {'items': unapproved, 'form': form})
は私のフォームは有効とform.errorsプリントではありません。選択肢" "ではありません主キーの有効な値
どうすればこの問題を解決できますか?または、選択したアイテムにアクセスする別の方法がありますか?
編集:フォームをテンプレートに渡しました。
あなたのフォームをテンプレートに送信してみませんか?コンテキスト= {'フォーム':フォーム}。私は個人的に一度だけビューの最初にフォームをインスタンス化する:form = ApproveEventForm(request.POSTまたはNone)、それを2回インスタンス化する必要はありません。 –