2014-12-10 2 views
0

Я хочу напечатать значение id в базе данных, и не знаю, какие ключевые слова найти в Google.
в моем views.py, я посылаю transen = TransEn.objects.all() в templatedjango шаблон распечатать по значению идентификатора фильтра

и это будет печатать все ДАННЫЕ из базы данных:

{% for words in transen %} 
{{words.words|safe }} 
{% endfor %} 

Но я хочу, чтобы напечатать на величину ид как:
(Потому что они слова на английском языке для переводческого сайта) Я не знаю, как написать это в шаблоне, пожалуйста, направляйте меня, большое спасибо.

<div><span> TransEn.objects.filter(id='2') </span></div> 
<div> TransEn.objects.filter(id='3') </div> 

enter image description here

UPDATE:

Я нашел способ:

я могу использовать if тег, но есть еще идеи ??

<div> 
    {% for words in transen %} 
     {% if words.id == 2 %} 
      {{ words.words|safe }} 
     {% endif %} 
    {% endfor %} 
</div> 
<div> 
    {% for words in transen %} 
     {% if words.id == 3 %} 
      {{ words.words|safe }} 
     {% endif %} 
    {% endfor %} 
</div> 

ответ

0

Если вы хотите получить доступ к каждому элементу в QuerySet индивидуально, по указанию, вы должны перенести его в список в первую очередь. Вы должны изменить ваш views.py на:

transen = list(TransEn.objects.all()) 

А затем в шаблоне вы можете получить к ним доступ по индексу, как так:

<div><span> {{ transen.1.words }} </span></div> 
<div> {{ transen.2.words }} </div> 

предупреждение от Django docuemtnation о приведении в QuerySet к списку:

Следует помнить, что это может иметь большие накладные расходы памяти, поскольку Django будет загружать каждый элемент списка в память. Напротив, итерация по QuerySet будет использовать вашу базу данных для загрузки данных и создания объектов только по мере необходимости.

+0

Я стараюсь, кажется, что он не может получить значение id, сохраненное в базе данных. поэтому, если мой идентификатор начинается с 2 или отсутствует номер. Он не получит правильное значение – user2492364

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