Картинка, использованная в models, не отображается на страницу

Изображение не отображается после добавления в админку. При нажатии на изображение в админке все работает корректно, но только пока не перезагружу проект. Также после добавления картинка (в папке media/images) двоится.

models.py

class Offer(models.Model):
    name = models.CharField("ФИО", max_length=60, blank=True, null=True)
    nickname = models.ForeignKey(User,on_delete=models.SET_NULL, null=True)
    header_image = models.ImageField("Фотография", null=True, blank=True, upload_to="images/")
    price = models.IntegerField("Цена занятия")
    subject = models.CharField("Предметы", max_length=60)
    venue = models.ForeignKey(Venue, blank=True, null=True, on_delete=models.CASCADE)
    rating = models.IntegerField("Рейтинг преподавателя", blank=True)
    data = models.DateField("Сколько преподает", max_length=50, blank=True)
    description = models.TextField("Описание",blank=True)
    def __str__(self):
        return self.name

urls.py

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

settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

admin.py

@admin.register(Offer)
class OfferAdmin(admin.ModelAdmin):
    list_display = ("name", "header_image", 'price', 'subject', "nickname")
    ordering = ('name',)
    search_fields = ('name', 'subject', )

html

{% extends 'main/base.html' %}
{% load static %}

{% block title %}
  {{title}}
{% endblock %}

{% block extra_head_links %}
  <link rel="stylesheet" type="text/css" href="{% static 'css/teacher.css' %}">
{% endblock %}



{% block content %}
{% for tutor in offers %}
<div class="blog">
  <div class="container" style="max-width: 800px;">
    <div class="row g-0">
      <div class="col-md-8">
        <div class="card-body">
          <h5 class="card-title"><strong>{{ tutor }}</strong></h5>
              <p class="card-text"> 
              
                  <ul>

                      <li><strong>Цена занятия: </strong>{{ tutor.price }}</li>
                      <li><strong>Формат проведения:</strong> {{ tutor.venue }}</li>
                      
                      <li><strong>Работает с: </strong> {{ tutor.data }}</li>
                      <li><strong>Предметы:</strong> {{ tutor.subject }}</li>
                      <li>О себе: {{ tutor.description }}</li>
                      <li><img src="{{ offers.header_image.url }}"></li>
                  </ul> 
                 
              </p> 
              
        </div>
      <br><br>
    
      </div>
      
    </div>
    
  </div>
</div>
{% endfor %}
{% endblock %}

Все остальные теги работают views.py

def all_tutors(request):
    offers = Offer.objects.all()
    return render(request, 'main/tutors.html', {"offers":offers})

Когда ты проходишь циклом в html, то к картинке указываешь путь offers.header_image.url, когда к другим полям обращаешься через tutor.

Исправь поле с картинкой на такое:

<li><img src="{{ tutor.header_image.url }}"></li>

Вам следует использовать {{ tutor.header_image.url }}, ваш вариант не работает т.к. в html вы передаете все объекты класса Offer, а в цикле for вы достаете один tutor и через точку можете достать то, что вы хотите получить для данного объекта

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