Как обрабатывать набор форм в представлении на основе функций

Я пытаюсь реализовать набор форм в функции create based view, чтобы позволить пользователям создавать свою собственную модель курса, почему-то, когда я пытаюсь отправить данные в базу данных, только данные модели курса отправляются в базу данных, а данные модуля не сохраняются в базе данных. почему функция create view не сохраняет данные, из моего модуля в базу данных модели и как лучше это сделать. Я знаю о решении с использованием class create view, но оно фактически не помогает в моем случае. и поэтому я думаю, что использование function create view будет гораздо более благоприятным для моего случая.

Здесь моя функция создает представление.

def course_create(request):
    Formset = formset_factory(CreateCourse, extra=2)
    if request.method =="POST":
        formset_data = Formset(request.POST, request.FILES)
        sub = request.POST.get('subject')
        course = request.POST.get('title')
        overview = request.POST.get('overview')
        slug = request.POST.get('slug')
        pic = request.FILES['c_pic']
        owner = Account.objects.get(username=request.user.username)
       
        sub,create = Subject.objects.get_or_create(title=sub)
        
        data = Course(title=course,owner=owner,
                      pic=pic,
                      subject=sub,
                      slug = slug,
                      overview=overview)
       
        data.save()

        if formset_data.is_valid():
            data = formset_data.save(commit=False)
            data.course = data 
            formset_data.save()
        return redirect('courses:main')

Вот мой Forms.py

class CreateCourse(forms.ModelForm):
        class Meta:
                model = Module
                fields = ['title', 'description']
        
        def save(self,commit=True):
                module = super(CreateCourse, self).save(commit=False)
                module.title = self.cleaned_data["title"]
                module.description = self.cleaned_data['description']
                if commit:
                        module.save()
                return module

model.py

class Course(models.Model):
    owner = models.ForeignKey(settings.AUTH_USER_MODEL,\
         related_name='courses_created', on_delete=models.CASCADE)
    subject = models.ForeignKey(Subject,related_name='courses', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    pic = models.ImageField(upload_to="course_pictures")
    slug = models.SlugField(max_length=200, unique=True,blank=True)
    overview = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    enroll = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='enrollment',blank=True)

    class Meta:
        ordering = ['-created']
    
    def __str__(self):
        return self.title

class WhatYouWillLearn(models.Model):
    course = models.ForeignKey(Course,on_delete=models.CASCADE, related_name="higlighs")
    hightlights = models.CharField(max_length=300, blank=True)

class Requirement(models.Model):
    course = models.ForeignKey(Course,on_delete=models.CASCADE, related_name="require")
    requirements = models.CharField(max_length=300, blank=True)



class Module(models.Model):
    course = models.ForeignKey(Course, related_name='modules', \
                        on_delete=models.CASCADE,)
    title  =  models.CharField(max_length=200)
    description = models.TextField(blank=True)

    order = OrderField(blank=True, for_fields=['course'])

    class Meta:
        ordering = ['course']

    def __str__(self):
        return '{}. {}'.format(self.order, self.title) 

Вот представление модуля в базе данных. enter image description here

Вернуться на верх