Question

J'ai un champ m2m dans une classe, et par table. Je ne suis pas table pour enregistrer la liste des articles de la par table. si j'ai une forme de sélection à plusieurs, comme ci-dessous, et je veux être en mesure d'enregistrer tous les éléments sélectionnés, comment dois-je faire ??

Ma forme modèle se présente comme suit:

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

et ma méthode de sauvegarde comme ceci:

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

Comment cela peut être fait? Merci!

Était-ce utile?

La solution

On dirait que vous avez dupliqué vous question. Je mets réponse ici: Django m2m sauver "à" la table

Autres conseils

Django doit gérer plusieurs à plusieurs ModelForms comme toute autre forme de modèle.

  

Lorsque vous utilisez simple save () sur un formulaire, toutes les données - y compris de nombreux à plusieurs données -. Est enregistré sans avoir recours à des appels de méthode supplémentaire

Référence:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top