ValueError: Атрибут 'image' не имеет связанного с ним файла Django

Я работаю над блогом, где я могу позволить другим пользователям загружать/размещать контент. Сейчас я работаю над фронтендом пользовательского поста, где пользователь может опубликовать свой пост, все поля работают, кроме поля изображения. После ввода необходимых данных он показывает мне следующее ''ValueError: Атрибут 'image' не имеет связанного с ним файла.''' Пожалуйста, как я могу это исправить мой код ниже

views.py

    if request.method == 'POST':
        form = ArticleForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
        else:
            print(form.errors)
    # else:
    #   form = ArticleForm()
    return render(request, 'CreatePost.html', {'form': form})

forms.py

from django import forms
from . models import Article

class ArticleForm(forms.ModelForm):
    # image = forms.ImageField(**kwargs, upload_to='featured_image/%Y/%m/%d/') #this
    class Meta:
        model = Article
        fields = [
        'title',
        'image',
        'slug',
        'author',
        'body',
        'publish',
        'status'
        ]

models.py

# models
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse


class PublishedManager(models.Manager):
    def get_queryset(self):
        return super(PublishedManager,self).get_queryset().filter(status='published')
# post model
class Article(models.Model):
    STATUS_CHOICES = (
    ('draft', 'Draft'),
    ('published', 'Published'),
    )

    title = models.CharField(max_length=250)
    image = models.ImageField(upload_to='featured_image/%Y/%m/%d/') #this
    slug = models.SlugField(max_length=250, unique_for_date='publish')
    author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='blog_posts')
    body = models.TextField()

    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    
    status = models.CharField(max_length=10,choices=STATUS_CHOICES,default='draft')

    class Meta:
        ordering = ('-publish',)
    
    def __str__(self):
        return self.title
    objects = models.Manager() # The default manager.
    published = PublishedManager() # Our custom manager.

    def get_absolute_url(self):
        return reverse('Blog:post',args=[self.slug])

Представляю, что вы не задаете в форме html тег enctype= "multipart/form-data". Подробнее здесь: https://docs.djangoproject.com/en/4.0/ref/forms/api/#binding-uploaded-files-to-a-form

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