Hello Everyone,

I want to inline formset for m2m relationship. Related code looks as 
follows:

models.py
```
class Outcome(models.Model):
    # some fields
   # Foreign key is created to make outcomes inline in course form
   course_outcome = models.ForeignKey("course.Course", 
on_delete=models.SET_NULL, blank=True, null=True)

class Course(models.Model):
   # some fields
   course_outcome = models.ManyToManyField(Outcome, 
verbose_name=COURSE_SINGULAR + " outcome", blank=True)
```

forms.py
```
class OutcomeForm(forms.ModelForm):
   # some fields

class CourseForm(forms.ModelForm):
   # some fields including inline outcomes

OutcomeFormSet = 
inlineformset_factory(parent_model=Course, model=Outcome, form=OutcomeForm, 
extra=1, can_delete=True)
```

views.py
```
class CourseCreateForm(CreateView):
   model = Course
   template_name = "course/course_form.html"
   form_class = CourseForm
   success_url = reverse_lazy("course")

   def get_context_data(self, **kwargs):
      context = super(CourseCreateForm, self).get_context_data(**kwargs)
      if self.request.POST:
         context["outcomes"] = OutcomeFormSet(self.request.POST)
      else:
         context["outcomes"] = OutcomeFormSet()
      return context

   def form_valid(self, form, **kwargs):
      super(CourseCreateForm, self).get_context_data(**kwargs)
      context = self.get_context_data()
      outcomes = context["outcomes"]
      with transaction.atomic():
         if outcomes.is_valid():
            self.object = form.save()
            outcomes.instance = self.object
            outcomes.save()
          
  
form.instance.course_outcome.set(Outcome.objects.filter(course_outcome=self.object))
            form.save()
      return super().form_valid(form)
```

All my data in Outcome and Course models saved successfully except m2m 
field of course model.
Can anyone please guide me what I am doing wrong here.

Thanks in advance,

--
Suraj
https://hacksj4u.wordpress.com
https://github.com/SurajDadral

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/ef3447dc-b99d-41c7-968a-0e2d15275fee%40googlegroups.com.

Reply via email to