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!

È stato utile?

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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top