Как передать данные в инжектированный шаблон django?

В интерфейсе админки django у меня есть пользовательская вкладка для отображения таблицы. Как отобразить таблицу в виде списка таблиц модели django admin вместо поля, но при этом получить контекст для таблицы из admin.py, вызвав метод из модели. Я использовал baton_form_includes django-baton для вставки шаблона под полем, но затем я не смог передать данные в этот шаблон.

models.py

class MyModel(TimeStampedModel):
.
.
.
def get_custom_tab_data(self):
    return OtherModel.objects.filter(
        active=False
    )

admin.py

@admin.register(models.MyModel)
class MyModelAdmin():
.
.
.
readonly_fields = (
    "get_custom_tab_data",
)
fieldsets = (
    _("Custom Tab"),
    {
        "fields": ("get_custom_tab_data"),
        "classes": ("tab-fs-custom")
    }
)
.
.
# django-baton
baton_form_includes = [("admin/custom_tab_template.html", "get_custom_tab_data", "below")]

# This was the better solution but template table should display as model admin list with custom data, so had to use baton_form_includes to inject template above field.
# def custom_tab_data(self, myModel: models.MyModel):
    #     if myModel.active:
    #         return "N/A"

    #     if custom_data := myModel.get_custom_tab_data()[:15]: # get 15 latest
    #         html_content = render_to_string(
    #             "admin/custom_tab_template.html",
    #             {"custom_data": custom_data}
    #         )
    #         return mark_safe(html_content)

    @admin.display(description="Custom Tab")
    def get_custom_tab_data(self, myModel: models.MyModel):
        return self.custom_tab_data(account)

custom_tab_template.html

{% load i18n l10n %}
<table class="table table-stripped">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>State</th>
            <th>Created</th>
        </tr>
    </thead>
    <tbody>
        {% comment %} {% for data in original.get_custom_tab_data|slice:"-15:" %} {% endcomment %}
        {% for data in custom_data %}
        <tr>
            <th>{{ data.id }}</th>
            <td>{{ data.name }}</td>
            <td>{{ data.state }}</td>
            <td>{{ data.created }}</td>
        </tr>
        {% empty %}
        <tr>
            <th>-</th>
            <td>-</td>
            <td>-</td>
            <td>-</td>
        </tr>
        {% endfor %}
    </tbody>
</table

views.py:

В представлении Django вы можете передавать данные в шаблон с помощью функции render.

from django.shortcuts import render

def my_view(request):
    my_data = {'key1': 'value1', 'key2': 'value2'}
    return render(request, 'my_template.html', {'my_data': my_data})

В этом примере my_data - это словарь, содержащий данные, которые вы хотите передать в шаблон. Ключи и значения в этом словаре будут доступны в шаблоне.

my_template.html:

Теперь в вашем шаблоне вы можете получить доступ к данным, используя ключи из словаря.

<!DOCTYPE html>
<html>
<head>
    <title>My Template</title>
</head>
<body>
    <h1>{{ my_data.key1 }}</h1>
    <p>{{ my_data.key2 }}</p>
</body>
</html>

В этом шаблоне {{ my_data.key1 }} и {{ my_data.key2 }} будут заменены на соответствующие значения из словаря my_data.

Не забывайте использовать соответствующие шаблонные теги ({{ }} для переменных, {% %} для потока управления) при работе в шаблонах Django.

Вернуться на верх