2013-11-13 2 views
1

Я пытаюсь сделать это в шаблоне Джанго:Как я могу сделать это в шаблоне Django

{% for book in books %} 
    if book in this library 
     print "already in this library" 
    else 
     print "add to this library" 
{% endfor %} 

есть две библиотеки L и O.

, но та же книга может быть в нескольких библиотеках, а я в библиотеке L. книга b находится в обеих библиотеках. вот почему моя петля дает оба выхода.

already in this library 
add to this library 

который не подлежит сомнению. Как я могу исправить эту логику?

+0

Ваши шаблоны должны избегать логического расчеты !! Вместо этого сделайте необходимые вычисления в python и попросите их просто отобразить их. –

+0

Я не думаю, что это происходит из-за того, что одна и та же книга находится в нескольких библиотеках, но вместо этого из-за наличия нескольких книг. –

+0

Я думаю, что эту логику можно рассматривать в представлении. Можете ли вы показать соответствующий код просмотра? – karthikr

ответ

5

Таким образом, есть два сценария:

  • а) книга в некоторой библиотеке
  • б) книга не в любой библиотеке

Мое предложение было бы сделать это на вид а не на уровне шаблона:

  1. Написать функцию просмотра, которая вычисляет два списка: одна из книг, которые не находятся в библиотеке ary и одна из книг, которые находятся в какой-то библиотеке.
  2. Объединить эти два массива в словаре (ключ = имя книги, значение = логическое значение, указывающее, является ли книга в библиотеке)
  3. Отправить этот словарь в шаблон
+0

Звучит неплохо, – doniyor

+0

Зависит ... Если в книгах есть поле (внешний ключ или что-то еще), рассказывающее, какая библиотека они принадлежат, и известна «текущая» библиотека, возможно, существует более простое решение (например, использование фильтра шаблонов) –

+0

@brunodesthuilliers, именно это я могу предложить вашему решению? – doniyor

Смежные вопросы