Тег Django Template в блоке {% if %} не отображается
Я делаю доску объявлений с помощью Django.
Как выразить это с помощью нужных букв вместо номера типа? Моя доска объявлений
HTML template(board.html)
{% for p in postlist %}
<tr>
<td>
{% if p.p_type == '1' %}
'cloud'
{% elif p.p_type == '2' %}
'wind'
{% endif %}
</td>
</tr>
{% endfor %}
output
(ПУСТО)
ожидаемый
Облачный ветер
Vies.py
def board(request, p_type=None):
current_type = None
p_types = PostType.objects.all()
postlist = Post.objects.all()
page = request.GET.get('page', '1')
if p_type:
current_type = get_object_or_404(PostType, p_type=p_type)
postlist = postlist.filter(p_type=current_type)
paginator = Paginator(postlist, 10) # Showing 20 posts.
page_obj = paginator.get_page(page)
return render(request, 'board/board.html', {'current_type':current_type, 'p_types': p_types, 'postlist': page_obj})
попробуйте это. В django, когда вы создаете внешний ключ, он добавляет _id
к нему для базы данных, так что теперь внутри вашего шаблона вы можете сравнить их, используя этот id(p_type_id
), и вы должны быть уверены, что Cloud имеет pk=1, а Wind имеет pk=2.
{% for p in postlist %}
<tr>
<td>
{% if p.p_type_id == 1 %}
'cloud'
{% elif p.p_type_id == 2 %}
'wind'
{% endif %}
</td>
</tr>
{% endfor %}