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.
Вы можете найти соответствующие документы здесь.