Django salvare un elenco di elementi in una tabella intermedia m2m
Domanda
Ho un campo M2M in una classe, e un bel passaggio tavolo. Io non sono tabella per salvare l'elenco di elementi dalla attraverso tavolo. se ho una forma di selezione a più, come qui di seguito, e voglio essere in grado di salvare tutti gli elementi selezionati, come devo farlo ??
La mia forma modello assomiglia a questo:
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])
e il mio metodo di salvataggio in questo modo:
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()
Come questo può essere fatto? Grazie!
Soluzione
Sembra che tu abbia duplicato si domanda. Ho messo risposta qui: Django m2m forma salvare "attraverso" tavolo
Altri suggerimenti
Django dovrebbe gestire molti-a-molti ModelForms proprio come qualsiasi altra forma di modello.
Quando si utilizza un semplice save () in un modulo, tutti i dati - tra cui molti-a-molti dati -. È salvato senza la necessità di eventuali chiamate di metodo aggiuntive
Riferimento: