Class-based views for M2M relationship with intermediate model

前端 未结 5 1756
时光取名叫无心
时光取名叫无心 2020-12-09 13:55

I have a M2M relationship between two Models which uses an intermediate model. For the sake of discussion, let\'s use the example from the manual:

class Pers         


        
5条回答
  •  無奈伤痛
    2020-12-09 14:26

    You must extend CreateView:

    from django.views.generic import CreateView
    
    class GroupCreate(CreateView):
        model=Group
    

    and override the form_valid():

    from django.views.generic.edit import ModelFormMixin
    from django.views.generic import CreateView
    
    class GroupCreate(CreateView):
        model = Group
    
        def form_valid(self, form):
            self.object = form.save(commit=False)
            for person in form.cleaned_data['members']:
                membership = Membership()
                membership.group = self.object
                membership.person = person
                membership.save()
            return super(ModelFormMixin, self).form_valid(form)
    

    As the documentation says, you must create new memberships for each relation between group and person.

    I saw the form_valid override here: Using class-based UpdateView on a m-t-m with an intermediary model

提交回复
热议问题