Тег 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 %}
Вернуться на верх