2つのフォームを想定したテンプレートページがあります。1つのフォームのみを使用する場合、この典型的な例のように問題はありません。
if request.method == 'POST':
form = AuthorForm(request.POST,)
if form.is_valid():
form.save()
# do something.
else:
form = AuthorForm()
ただし、複数のフォームを操作したい場合は、フォームの1つだけを送信し、他のフォームは送信しないことをビューに通知するにはどうすればよいですか(つまり、request.POSTのままですが、送信したフォームのみを処理します)起こりました)?
これは、expectedphraseとbannedphraseがさまざまなフォームの送信ボタンの名前で、expectedphraseformとbannedphraseformがフォームであるという回答に基づくソリューションです。
if request.method == 'POST':
if 'bannedphrase' in request.POST:
bannedphraseform = BannedPhraseForm(request.POST, prefix='banned')
if bannedphraseform.is_valid():
bannedphraseform.save()
expectedphraseform = ExpectedPhraseForm(prefix='expected')
elif 'expectedphrase' in request.POST:
expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected')
if expectedphraseform.is_valid():
expectedphraseform.save()
bannedphraseform = BannedPhraseForm(prefix='banned')
else:
bannedphraseform = BannedPhraseForm(prefix='banned')
expectedphraseform = ExpectedPhraseForm(prefix='expected')