Ich habe eine Vorlagenseite, die zwei Formulare erwartet. Wenn ich nur ein Formular verwende, sind die Dinge in Ordnung wie in diesem typischen Beispiel:
if request.method == 'POST':
form = AuthorForm(request.POST,)
if form.is_valid():
form.save()
# do something.
else:
form = AuthorForm()
Wenn ich jedoch mit mehreren Formularen arbeiten möchte, wie kann ich der Ansicht mitteilen, dass ich nur eines der Formulare und nicht das andere sende (dh es ist immer noch request.POST, aber ich möchte nur das Formular verarbeiten, für das die Übermittlung erfolgt passierte)?
Dies ist die Lösung, die auf der Antwort basiert, wobei Expectedphrase und Bannedphrase die Namen der Senden- Schaltflächen für die verschiedenen Formulare sind und Expectedphraseform und Bannedphraseform die Formulare sind.
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')