Django ImageField не загружается при отправке формы, но не генерирует никаких ошибок

У меня есть простое приложение, которое использует ImageField для загрузки и хранения фотографии. Я запускаю приложение локально. Форма отображается, как и ожидалось, и позволяет мне просмотреть и выбрать файл jpg. Затем она показывает выбранное имя файла рядом с кнопкой "Выбрать файл", как и ожидалось. Когда я отправляю форму, она сохраняет поля модели 'name' и обновляет 'keywords', но не сохраняет файл и не добавляет имя файла в базу данных. Никаких ошибок не возникает. Просматривая базу данных, я вижу новую добавленную запись, но колонка 'photo' пуста. Любая помощь будет оценена по достоинству.

settings.py:

MEDIA_ROOT = '/Users/charlesmays/dev/ents/ents/enrich/'

models.py:

class Enrichment(models.Model):
    name = models.CharField( max_length=255, unique=True)
    keywords = models.ManyToManyField(KeyWord, blank=True)
    photo = models.ImageField(upload_to='enrichments/', null=True, blank=True)

views.py:

def EnrichmentUploadView(request):
    if request.method == 'POST':
        form = CreateEnrichmentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('index'))
        else:
            return render(request, 'createEnrichment.html', {'form':form})

    else:
        form = CreateEnrichmentForm()
        return render(request, 'createEnrichment.html', {'form':form})

forms.py:

class CreateEnrichmentForm(forms.ModelForm):

    class Meta:
        model = Enrichment
        fields = ('name', 'photo', 'keywords')
        enctype="multipart/form-data"

Измените все это, тогда все должно работать...

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    -------
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

models.py

photo = models.ImageField(upload_to="enrichments/", default="")

И ваша шаблонная форма

<form action="" id="" method="" enctype="multipart/form-data">
------
</form>
Вернуться на верх