Автоматическое добавление файла в форму в dajngo CreateView

У меня есть модель Major и модель Course. Когда я добавляю курс в модель курса с помощью ModelForm и класса CreatView, я хочу добавить поле автоматически. Я пытался использовать метод form_valid, но он выдает ошибку: NOT NULL constraint failed: quizes_course.major_id это основная модель:

class Major(models.Model):
    name   = models.CharField(max_length=50)
    years   = models.IntegerField(validators=[minMaxVal])

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("majors")
    

    class Meta:
        verbose_name_plural = "1. Majors"

и это модель курса:

class Course(models.Model):
    major   = models.ForeignKey(Major, on_delete=models.CASCADE)
    year    = models.IntegerField(validators=[minMaxVal])
    name    = models.CharField(max_length=100)

    def __str__(self):
        return f'{self.major.name}_{self.year}_{self.name}'

    def get_absolute_url(self):
        return reverse("courses", kwargs={"pk": self.major.pk})
        
    class Meta:
        verbose_name_plural = "2. Courses"

и вот такой вид:

class CreateCourse(CreateView):
    model = Course
    form_class = CourseCreateForm 
    template_name = 'quizes/create.html'

    def form_valid(self, form):
        form.save(commit=False)
        major = get_object_or_404(Major, id=self.kwargs['pk'])
        form.major = major.id
        return super().form_valid(form)

Я решаю эту проблему, переопределяя метод post в CreateCourse:

def post(self, request, pk):
        form = CourseCreateForm(request.POST)
        if form.is_valid():
            major = get_object_or_404(Major, id=pk)
            form = form.cleaned_data
            course = Course(major=major, name=form['name'], year=form['year'])
            course.save()
            return redirect(reverse('courses', kwargs={'pk':pk}))
        return Http404('Error')
Вернуться на верх