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

В атрибуте 'Image' написано, что нет связанного файла, что это значит? Как мне решить эту проблему? Я пытался искать в интернете и ничего не смог понять, потому что я только начал учиться.

Мое мнение:

def bookdata(req):
    if req.method == "POST":
        b_name = req.POST.get('book name')
        a_name = req.POST.get('author name')
        p_year = req.POST.get('published year')
        price = req.POST.get('price')
        image = req.FILE['image']
        obj = BookDetails(Name=b_name, A_Name=a_name, P_Year=p_year, Price=price, Image=image)
        obj.save()
        return redirect(add_books)

Моя модель:

class BookDetails(models.Model):
    Name = models.CharField(max_length=30, null=True, blank=True)
    A_Name = models.CharField(max_length=30, null=True, blank=True)
    P_Year = models.IntegerField(null=True, blank=True)
    Price = models.IntegerField(null=True, blank=True)
    Image = models.ImageField(upload_to="book images", null=True, blank=True)

Шаблон:

<table class="table table-bordered">
    `<thead>`
    <tr>
        <th>Name</th>
        <th>A_Name</th>
        <th>P_Year</th>
        <th>Price</th>
        <th>Image</th>
    </tr>
    </thead>
    {% for i in data %}
    <tr>
        <td>{{ i.Name }}</td>
        <td>{{ i.A_Name }}</td>
        <td>{{ i.P_Year }}</td>
        <td>{{ i.Price }}</td>
        <td>
            <img src="{{ i.Image.url}} ">
        </td>
    </tr>
    {% endfor %}

Ошибка вызвана тем, что с полем image не связано ни одно изображение. Используйте следующий код для правильного хранения изображения:

def bookdata(req):
if req.method == "POST":
    b_name = req.POST.get('book name')
    a_name = req.POST.get('author name')
    p_year = req.POST.get('published year')
    price = req.POST.get('price')
    image = req.FILES['image']    # Change Done Here
    obj = BookDetails(Name=b_name, A_Name=a_name, P_Year=p_year, Price=price, Image=image)
    obj.save()
    return redirect(add_books)

В шаблоне также можно сделать некоторые изменения, например :

<td>
    {% if i.Image %}
         <img src="{{ i.Image.url}} ">
    {% else %}
         <img src="#path_to_default_image">   
    {% endif %}
</td>
Вернуться на верх