Как импортировать собственный класс в jinja?

Я пытаюсь проверить принадлежность объекта к определенному классу, но мне выдается ошибка:

Ошибка

Код:

history.html

{% extends 'core/base.html' %}

{% block title %}История{% endblock %}

{% block content %}
    <h1 class="text-center">История</h1>
    {% if transactions %}
        {% for el in transactions %}
            {% if isinstance(IncomeTransaction, el) %}
                <div class="alert alert-warning">
                    <h3>Транзакция дохода</h3>
                    <p>Дата: {{ el.date }}</p>
                    <p>Сумма: {{el.amount}}</p>
                    <p>Комментарий: {{ el.commentary }}</p>
                    <p>Счет: {{ el.account.name }}</p>
                    <p>Категория дохода: {{ el.income_category.name }}</p>
                </div>
            {% endif %}

        {% endfor %}
    {% else %}
        <p class="text-center">У вас еще не было транзакций</p>
    {% endif %}

models.py:

from django.db import models


class IncomeCategory(models.Model):
    name = models.CharField(max_length=100)


class ExpenseCategory(models.Model):
    name = models.CharField(max_length=100)


class Account(models.Model):
    name = models.CharField(max_length=100)


class Transaction(models.Model):
    amount = models.PositiveIntegerField()
    date = models.DateField()
    commentary = models.TextField(blank=True)

    class Meta:
        abstract = True


class IncomeTransaction(Transaction):
    income_category = models.ForeignKey(IncomeCategory, on_delete=models.PROTECT)
    account = models.ForeignKey(Account, on_delete=models.PROTECT)


class ExpenseTransaction(Transaction):
    account = models.ForeignKey(Account, on_delete=models.PROTECT)
    expense_category = models.ForeignKey(ExpenseCategory, on_delete=models.PROTECT)


class InnerTransaction(Transaction):
    account_from = models.ForeignKey(Account, on_delete=models.PROTECT, related_name='inner_transaction_from_set')
    account_to = models.ForeignKey(Account, on_delete=models.PROTECT, related_name='inner_transaction_to_set')

views.py

def history(request):
    url_name = request.resolver_match.url_name
    incomeT = IncomeTransaction.objects.order_by("-date")
    expenseT = ExpenseTransaction.objects.order_by("-date")
    innerT = InnerTransaction.objects.order_by("-date")
    transactions = sorted((chain(incomeT, expenseT, innerT)), key=attrgetter('date'))
    return render(request, 'core/history.html', {'url_name': url_name, 'incomeT': incomeT, 'expenseT': expenseT, 'innerT': innerT, 'transactions':transactions})

Ответы (1 шт):

Автор решения: Andrey Maslov

не использовал jinja, если брать просто шаблоны джанго, то можно просто использовать {% if el.__class__.__name__ == 'IncomeTransaction' %} правда такой вариант не будет отрабатывать потомков класса, что является минусом

либо писать кастомный template Tag

→ Ссылка