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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage