Django speichern eine Liste von Elementen in einer m2m Vermittler Tabelle
Frage
Ich habe eine m2m Feld in einer Klasse, und ein durch Tabelle. Ich bin nicht Tabelle der Liste der Elemente aus dem durch Tabelle zu speichern. wenn ich eine Multi wählen Form haben, wie unten, und ich möchte in der Lage sein, alle die ausgewählten Elemente zu speichern, wie soll ich es tun ??
Meine Modellform sieht wie folgt aus:
class ClassroomForm(ModelForm):
class Meta:
model = Classroom
fields = ['classname','members','private']
def __init__(self, *args, **kwargs):
creator = kwargs.pop('user')
super(ClassroomForm, self).__init__(*args, **kwargs)
relations = Relations.objects.filter(initiated_by = creator)
self.fields["members"].queryset = \
User.objects.filter(pk__in=[r.follow.pk for r in relations])
und meine speichern Methode wie folgt:
def save_classroom(request):
classroom_instance = Classroom()
if request.method == 'POST':
form = ClassroomForm(request.POST, request.FILES, user = request.user)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.user = request.user
new_obj.save()
membership = Membership(member = HERE SELECTED ITEMS FROM FORM,classroom=new_obj)
membership.save()
Wie kann dies geschehen? Dank!
Lösung
Sieht aus wie Sie haben Sie Frage dupliziert. Ich habe Antwort hier: Django m2m Form "durch" Tabelle speichern
Andere Tipps
Django sollte wie jedes andere Modell Form many-to-many ModelForms behandeln.
Wenn Sie eine einfache save () auf einem Formular verwenden, werden alle Daten - einschließlich many-to-many-Daten -. Ohne die Notwendigkeit zusätzlicher Methodenaufrufe gespeichert
Referenz: