Форма Django для загрузки файлов недействительна

У меня есть модель Django следующего содержания

class NewFile(models.Model):
    name = models.CharField(max_length=200)
    phone = models.CharField(max_length=200)
    address = models.CharField(max_length=1000)
    csv_file = models.FileField(upload_to ='retailer_uploads/')
    
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

А форма Django выглядит следующим образом

class NewFileForm(forms.ModelForm):
    class Meta:
        model = NewFile
        fields = ('name', 'phone', 'address', 'csv_file')

Это мои представления Django

def handle_new_file(request):
    if (request.method == 'POST'):

        form = NewFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()

            csv_file = request.FILES['csv_file']
            
            fs = FileSystemStorage()
            csv_file_name = fs.save(csv_file.name, csv_file)
            csv_file_url = fs.url(csv_file_name)
            
            return redirect('home')

И, наконец, мой шаблон

<form action="{% url 'handle_new_file' %}" method='post' enctype="multipart/form-data" id='new_form'>
    {% csrf_token %}
    <div class="row">
        <div class="col-md-6">
            {{ new_file_form.name|as_crispy_field }}
        </div>
        <div class="col-md-6">
            {{ new_file_form.phone|as_crispy_field }}
        </div>
    </div>
    {{ new_file_form.address|as_crispy_field }}
    {{ new_file_form.ean_mapping|as_crispy_field }}
    {{ new_file_form.retailer_file|as_crispy_field }}

    <div class="d-grid gap-2">
        <button class="btn btn-primary" type="submit">Submit</button>
    </div>
</form>

Во-первых, проблема, с которой я столкнулся, заключается в том, что по какой-то причине эта форма не действительна, так как она не сохраняется. Не уверен почему.

Но я хочу сделать следующее: после сохранения формы я хочу открыть файл csv из папки media и получить имена столбцов из этого файла. Для этого у меня есть вспомогательная функция. Проблема в том, что я не могу получить доступ к файлу, так как он не сохраняется.

Я не уверен, что я делаю неправильно.

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