Django Изображение не отображается в django при использовании тегов шаблона

Когда я пытаюсь вызвать изображение вот так {{ profile.image.url }} оно работает на странице профиля, но на главной странице, когда я делаю {{ post.user.profile.image.url }} ничего не отображается и это не то, что я ожидаю. Я также попробовал проверить, работает ли url изображения и да, работает. ПРИМЕЧАНИЕ: На странице профиля все работает нормально, как и ожидалось, но в index.html кажется, что ничего не отображается.

index.html

{% for post in post_items %}
   <a href="{{post.user.profile.image.url}}" class="post__avatar">
       <img src="{{post.user.profile.image.url}}" alt="User Picture">
   </a>
   <a href=""{{ post.user.username }}</a>

models.py

class Profile(models.Model):
    user = models.ForeignKey(User, related_name='profile', on_delete=models.CASCADE)
    image = models.ImageField(upload_to="profile_pciture", null=True)


    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

    def __str__(self):
        return f'{self.user.username} - Profile'

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

То, как вы определили модель Profile, приводит к связи "один-ко-многим" с User, поэтому полем для обратной связи будет post.user.profile_set[0].image.

Поскольку, судя по всему, вам нужны отношения один-к-одному, модель Profile должна быть такой:

class Profile(models.Model):
    user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE)
    image = models.ImageField(upload_to="profile_pciture", null=True)

После этого вы должны быть в состоянии проследить отношения в обратном направлении с помощью post.user.profile.image.

Вы можете найти соответствующие документы здесь.

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