Django - Formular zum Bearbeiten mehrerer Instanzen von model @ erstell
Hinweis: Django / Python-Anfänger, hoffe, diese Frage ist klar
Ich muss ein Formular erstellen, in dem mehrere Instanzen eines Modells gleichzeitig in einem einzigen Formular bearbeitet und gleichzeitig gesendet werden können.
Zum Beispiel habe ich zwei Modelle, Invite und Guest, bei denen mehrere Guests einer einzelnen Invite zugeordnet werden können. Ich benötige ein einziges Formular, in dem ich bestimmte Details aller an die Einladung angehängten Gäste bearbeiten, gleichzeitig übermitteln und in der Datenbank speichern kann.
Ich habe ein paar Vorschläge zur Verwendung von @ geseh knusprige Formen, habe es aber nicht geschafft, es zum Laufen zu bringen.
Ich habe ein Formular erstellt, das bestimmte Eingaben enthält:
from django import forms
from app.models import Guest
class ExtraForm(forms.ModelForm):
diet = forms.CharField(max_length=128, required=False)
transport = forms.BooleanField(initial=False)
# An inline class to provide additional information on the form.
class Meta:
# Provide an association between the ModelForm and a model
model = Guest
fields = ('diet', 'transport')
Meine Ansicht besteht aus:
def extra_view(request, code):
invite = get_invite(code)
# Get the context from the request.
context = RequestContext(request)
# Get just guests labelled as attending
guests_attending = invite.guest_set.filter(attending=True)
if request.method == 'POST':
form = ExtraForm(request.POST)
print(form.data)
# Have we been provided with a valid form?
if form.is_valid():
# Save the new category to the database.
# form.save(commit=True)
print(form)
return render(request, 'weddingapp/confirm.html', {
'invite': invite,
})
else:
# The supplied form contained errors - just print them to the terminal for now
print form.errors
else:
# # If the request was not a POST, display the form to enter details.
GuestForm = ExtraForm()
return render_to_response('weddingapp/extra.html',
{'GuestForm': GuestForm, 'invite': invite, 'guests_attending': guests_attending}, context)
Und schließlich mein Formular:
<form id="extra_form" method="post" action="{% url 'weddingapp:extra' invite.code %}">
{% csrf_token %}
{% for guest in guests_attending %}
<fieldset class="form-group">
<h3>Form for {{ guest.guest_name }}</h3>
{% for field in GuestForm.visible_fields %}
{{ field.errors }}
<div>
{{ field.help_text }}
{{ field }}
</div>
{% endfor %}
</fieldset>
{% endfor %}
{{ form.management_form }}
<table>
{% for form in form %}
{{ form }}
{% endfor %}
</table>
<input type="submit" name="submit" value="Submit"/>
</form>
Irgendein Ra