Tengo una página de plantilla que espera dos formas. Si solo uso un formulario, las cosas están bien como en este ejemplo típico:
if request.method == 'POST':
form = AuthorForm(request.POST,)
if form.is_valid():
form.save()
# do something.
else:
form = AuthorForm()
Sin embargo, si quiero trabajar con varios formularios, ¿cómo hago para que la vista sepa que estoy enviando solo uno de los formularios y no el otro (es decir, todavía es una solicitud. sucedió)?
Esta es la solución basada en la respuesta donde la frase esperada y la frase prohibida son los nombres de los botones de envío para los diferentes formularios y la forma esperada y la frase prohibida son los formularios.
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')