Дебаг цикла в template в django

``

{% extends "base.html" %}

{% block body_block %}
<h2>тестовые тесты</h2>
<ol>
<li>{{ food_detail.food_name }}</li>
</ol>
<h3>Комментари</h3>
<ol>
  {% for comments in food_detail.Food_r.all %}
    <li>{{ comments.text_t }}</li>
  {% empty %}
    <li>нет Комментариев</li>
  {% endfor %}
</ol>
{% endblock%}

``

как мне понять почему этот цикл выдает пустой результат? food_detail.food_name - данные возвращают

class Comments_Food(models.Model):
    date_d          = models.DateTimeField(auto_now=False,
                                            verbose_name="Время")
    Food_r          = models.ForeignKey(Food,
                                        models.DO_NOTHING,
                                        verbose_name="Блюдо")

Ответы (1 шт):

Автор решения: unknown

Судя по комментариям к вопросу, нужно вывести связанные объекты для экземпляра Food, который в шаблоне представлен как food_detail.

{% for comment in food_detail.comments_food_set.all %}
    <li>{{ comment.text_t }}</li>
{% empty %}
    <li>нет Комментариев</li>
{% endfor %}

P.S. Непонятно, что такое text_t? В шаблоне в переменной comment будет храниться экземпляр класса Comments_Food. Поэтому из comment можно получить доступ к каждому полю модели.


Советую задать related_name для обратной связи и задавать имена атрибутов (полей) в стиле snake_case, а название классов - в CamelCase. Тогда модель и шаблон будут выглядеть следующим образом:

models

class CommentsFood(models.Model):
    date_d = models.DateTimeField(auto_now=False,
                                  verbose_name="Время")
    food_r = models.ForeignKey(Food,
                               models.DO_NOTHING,
                               verbose_name="Блюдо",
                               related_name="comments")

template

{% for comment in food_detail.comments.all %}
    <li>{{ comment.text_t }}</li>
{% empty %}
    <li>нет Комментариев</li>
{% endfor %}
→ Ссылка