Задать вопрос
MalekBV
@MalekBV

Django. Как вывести в html данные из другой модели foreignKey?

Здравствуйте, у меня есть Модель Tag и модель Anime
Через foreign key я соединил Tag с Anime, но мне нужно вывести все тэги в том месте, где я прохожусь циклом по anime
anime.tag не получается, так как нет такого атрибута в самой модели, как вывести все тэги?
Models.py:
class Anime(models.Model):
    title = models.CharField("Аниме", max_length = 50)
    description = models.TextField("Описание")
    picture = models.ImageField(upload_to='images/', blank = True, null = True, verbose_name = "Картинка")
    pub_date = models.DateTimeField("Дата выхода записи")
    pub_date_post = models.IntegerField("Дата выхода Аниме", default = 0)
    like = models.IntegerField("Лайков", default = 0)

class Tag(models.Model):
    name = models.CharField("Тэг", max_length = 30)
    animes = models.ForeignKey(Anime, on_delete = models.CASCADE, blank = True, null=True)


Шаблон HTML:

{% block content %}
<div class="wrapper">
  <div class="container">
    <h1 class="list">ТОП АНИМЕ</h1>
    <div class="row">
        {% for a in anime %}
          <div class="col-4 anime-top mb-5">
            <img src="{{ a.picture.url }}" alt="picture" class="anime-picture">
            <h5 class="anime-title">{{ a.title }}</h5>
            <p>Жанры: {{ a.tag }}</p> <--- Здесь проблема
            <p><i>Год выпуска: {{ a.pub_date_post }}</i></p>
            <p><a href="addlikes/{{ a.id }}" id="like-one-time"> <i class="far fa-heart"></i> </a>{{ a.like }}</p>
          </div>
        {% endfor %}
    </div>
  </div>
</div>
{% endblock %}


В цикле, anime это переменная из view
anime = Anime.objects.all()
return render(request, "animeapp/homePage.html", {"anime": anime})

В шаблоне, параграф жанры, нужно вывести все тэги, как это сделать?
  • Вопрос задан
  • 1379 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
JRazor
@JRazor
Senior StarkOverFlow Programmer
А related_name где? Ты на что вообще ссылаешься? Как база должна понять, чего ты хочешь?

Идешь в Tag, в поле animes дописываешь related_name='tags', а потом при вызове a.tags получаешь все теги. Миграцию сделать не забудь

Потом идешь во вьюху:
anime = Anime.objects.prefetch_related('tags').all()

Потом уже в шаблон:
{% for a in anime %}
     {% for tag in a.tags %}
          {{ tag }}
     {% endfor %}
{% endfor %}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы