Pregunta

Tengo un campo M2M en una clase, y una mesa de por medio. No estoy tabla para guardar la lista de elementos de la tabla a través. si tengo una forma de selección múltiple, como el de abajo, y quiero ser capaz de guardar todos los elementos seleccionados, ¿cómo debo hacerlo ??

Mi modelo de formulario es similar al siguiente:

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])

Guardar y mi método como este:

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() 

¿Cómo se puede hacer esto? Gracias!

¿Fue útil?

Solución

Parece que han duplicado que se trate. Pongo respuesta aquí: Django forma M2M salvar "a través de" mesa

Otros consejos

Django debe manejar muchos-a-muchos ModelForms al igual que cualquier otra forma de modelo.

  

Cuando se utiliza un simple save () en un formulario, todos los datos - incluyendo los datos de muchos-a-muchos -. Se guarda sin la necesidad de tomar las llamadas a métodos adicionales

Referencia:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top