Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » использование вложенных циклов в шаблонах django [RSS Feed]

#1 Март 5, 2012 20:33:44

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

использование вложенных циклов в шаблонах django

Не пойму почему у меня при использовании вложенных циклов выпадает ошибка:
Caught DatabaseError while rendering: more than one row returned by a subquery used as an expression

{% if list1 %}
{% for ls1 in list1 %}

{% if list2%}
{% for ls2 in list2 %}
действие
{% endfor %}
{% endif %}

{% endfor %}
{% endif %}



Офлайн

#2 Март 5, 2012 21:08:51

alexzander77
От:
Зарегистрирован: 2009-01-27
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

использование вложенных циклов в шаблонах django

а там где “действие” нет обращения к модели ?



Офлайн

#3 Март 5, 2012 21:33:39

Imposeren
От:
Зарегистрирован: 2009-04-06
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

использование вложенных циклов в шаблонах django

Да, нужны детали. Скорее всего? вы там обращаетесь к полю модели у которого может быть несколько записей, и делаете get.

Примеры: many-to-one, Many-to-many
Если нужен один объект, то делайте “.get.0”



Офлайн

#4 Март 6, 2012 14:41:31

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

использование вложенных циклов в шаблонах django

смысл таков:
есть 2 модели, модельА и модельБ (foreign key на модельА). На странице должны отобразиться список данных из моделиА со вложенными списками моделиБ (вложенный список содержит только те элементы моделиБ, которые относятся к данному элементу модели А).
Там, где “действие”:
{% ifequal ls2.foreignkey_id ls1.id %}
{{ ls2.data1 }}, {{ ls2.data2 }}
{% endifequal %}



Отредактировано (Март 6, 2012 14:45:34)

Офлайн

#5 Март 6, 2012 17:23:59

alexzander77
От:
Зарегистрирован: 2009-01-27
Сообщения: 46
Репутация: +  1  -
Профиль   Отправить e-mail  

использование вложенных циклов в шаблонах django

а ls1.ls2_set() в шаблоне не работает разве?

или Вы передаете в шаблон не модели, а уже полученные данные в словарях ? Судя по ошибке передаете именно шо модели.
Какой тип внешнего ключа?
Не может ли ссылатся он на несколько записей в первой модели?


вот эти два куска делают одно и то же, но второй, имхо, правильнее

 {% for ls1 in v %}
<br>{{ ls1.sname }}
{% for ls2 in ph %}
{% ifequal ls2.sname_id ls1.sname %}
{{ ls2.phase }}
{% endifequal %}
{% endfor %}
{% endfor %}
    {% for ls1 in v %}
<br>{{ ls1.sname }}
{% for ls2 in ls1.phase_set.all %}
{{ ls2.phase }}
{% endfor %}
{% endfor %}



Отредактировано (Март 6, 2012 17:51:58)

Офлайн

#6 Март 6, 2012 20:19:51

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

использование вложенных циклов в шаблонах django

Попробовал, второй вариант. Работает. Спасибо!
Я, правда, уже решил задачу немного по-другому: разработав собственный тег включения.



Офлайн

  • Начало
  • » Django
  • » использование вложенных циклов в шаблонах django[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version