Сохранение изображений в FormWizard Django не работает

Я создал приложение Django, в котором пользователю необходимо заполнить форму для создания нового курса. Я использовал FormWizard для создания многоступенчатой формы. Форма также попросит пользователя загрузить изображение для обложки курса.

Однако, это не работает так, как ожидалось & файл не загружается в файловую систему. Ошибка, которую я получил при сохранении в файловой системе, заключалась в том, что носитель не выбран/не требуется носитель.

Помогите, пожалуйста.

models.py

class Course(models.Model):
     CATEGORY = (
            ('IT & Software', 'IT & Software'),
            ('Mathematics', 'Mathematics'),
            ('Science', 'Science'),
            ('English', 'English'),
            ('Bahasa Melayu', 'Bahasa Melayu'),
            )

     LEVEL = (
        ('Easy', 'Easy'),
        ('Intermediate', 'Intermediate'),
        ('Advanced', 'Advanced'),
        )

     LANGUAGE = (
            ('English', 'English'),
            ('Bahasa Malaysia', 'Bahasa Malaysia'),
            ('Chineese', 'Chineese'),
            )

     CERTIFICATE = (
        ('Yes', 'Yes'),
        ('No', 'No'),
        )

     media = models.ImageField(upload_to = 'media/course')
     title = models.CharField(max_length=30, null = False)
     subtitle = models.CharField(max_length=50, null = False)
     description = models.CharField(max_length=2000, null = False)
     language = models.CharField(max_length=20, null = False, choices=LANGUAGE)
     level = models.CharField(max_length=20, null = False, choices=LEVEL)
     category = models.CharField(max_length=30, null = False, choices=CATEGORY)
     subcategory = models.CharField(max_length=20, null = False)
     price = models.IntegerField(null = False)
     roles_responsibilities = models.CharField(max_length=250, null = False)
     timeline_budget = models.CharField(max_length=250, null = False)
     req_prerequisite = models.CharField(max_length=250, null = False)
     certificate = models.CharField(max_length=5, null = False, choices=CERTIFICATE)
     slug = AutoSlugField(populate_from='title', max_length=500, unique=True, null=True)

     def __str__(self):
        return self.title

forms.py

class CourseForm1(forms.ModelForm):
class Meta:
    model = Course
    fields = ['roles_responsibilities','timeline_budget','req_prerequisite','certificate']

class CourseForm2(forms.ModelForm):
class Meta:
    model = Course
    fields = ['media','title','subtitle','description','language','level','category','subcategory','price']

views.py

class multiplestepformsubmission(SessionWizardView):
     template_name = 'courses/create_course.html'
     form_list = [CourseForm1, CourseForm2]
     file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'media'))

     def done(self, form_list, **kwargs):
         form_data = [form.cleaned_data for form in form_list]
         return render(self.request, 'courses/create_course.html', { 'data': form_data})

create_course.html

<div class="card-body">
                <p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p> 
                <form action="" method="POST" encytpe="multipart/form-data">{% csrf_token %}
                    <table>
                        {{ wizard.management_form }}
                        {% if wizard.form.forms %}
                            {{ wizard.form.management_form }}
                            {% for form in wizard.form.forms %}
                                {{ form }}
                            {% endfor %}
                        {% else %}
                            {{ wizard.form }}
                        {% endif %}
                    </table>
                {% if wizard.steps.prev %}
                <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">First Step</button>
                <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">Previous Step</button>
                {% endif %}
                <input type="submit" value="submit"/>
                </form>
            </div>

urls.py

path('createcourse/', views.multiplestepformsubmission.as_view(), name='createcourse'),
Вернуться на верх