Form.save() не работает в django при использовании FileField() в моделях. Загруженный файл не сохраняется в каталоге

Я довольно новичок в Django и пытаюсь сохранить загруженное пользователем изображение в папку. После небольшого исследования я узнал, что form.save() сохраняет форму и изображение в мою папку. Но это не работает.

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

У меня есть эти строки кода в моем views.py файле

def upload_file(request):
if request.method == 'POST':
    form = UploadFile(request.POST, request.FILES)
    file = request.FILES['file'] 

    extension = str(file).split('.')[1]  

    img_extension = ['jpeg', 'jpg', 'png', 'tiff', 'raw', 'gif']
    video_extension = ['mp4', 'mov', 'wmv', 'avi', 'mkv', 'webm']

    if extension in img_extension:
        if form.is_valid():
            form.save()
            return HttpResponse('Success')

        return HttpResponse('It is a Image Extension - ' + str(extension))

    elif extension in video_extension:
        if form.is_valid():
            form.save()
            return HttpResponse('Success')

        return HttpResponse('It is a Video Extension - ' + str(extension))
    else:
        return HttpResponse('Please Upload a proper Image or a Video format')
else:
    form = UploadFile()

context = {
    'form': form,
}

return render(request, 'upload.html', context)

У меня есть простой FileField() в models.py файле

from django.db import models
from django.conf import settings
from djongo.storage import GridFSStorage
from django.core.files.storage import FileSystemStorage

from project.settings import MEDIA_URL


grid_fs_storage = GridFSStorage(collection='images', base_url=''.join([settings.MEDIA_ROOT, 'images/']))
fs = FileSystemStorage(location='/images')

# Create your models here.
class Uploads(models.Model):
    uploaded_file = models.FileField(null=True, blank=True, upload_to="images/", storage=fs)

Ошибка, которую я получаю, гласит

AttributeError at /upload/
'UploadFile' object has no attribute 'save'

urls.py файл

from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from base.views import upload_file, home, FileFieldFormView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home, name='home'),
    path('upload/', upload_file, name='upload'),
    path('new-upload/', FileFieldFormView.as_view(), name='new-upload'),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Файл шаблонов upload.html

{% extends "base.html" %}

{% block content %}
    <form action="{% url 'upload' %}" method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <!-- <input type="submit" value="upload" name="" id=""> -->
        <button type="submit">Upload</button>
    </form>
{% endblock content %}

Что я здесь упускаю?

Мое предложение - использовать модель формы ModelForm, поскольку это значительно упростит процесс. Просто преобразуйте вашу форму в ModelForm:

from django.forms import ModelForm

# Assuming your model is in the same app as your form, then
from .models import Uploads

class UploadFile(forms.Form):
    class Meta:
        model = Uploads

Тогда вы можете оставить свой вид как есть, а form.save() позаботится о сохранении файла за вас.

Если вам нужно остаться с обычными формами вместо ModelForm, вы можете использовать FieldFile.save().

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