Как добавить пользовательское представление в пользовательский AdminSite в Django
Я начинающий Django и в основном хочу добавить раздел в Django Admin, где если я нажму на него, у меня будет представление, которое может обрабатывать данные.
Например: У меня есть модели Campaign и Components, к которым я могу получить доступ через Django Admin, и теперь я также хочу опцию "Analytics", которая работает так же, как если бы это была модель. Возможно, это изображение прояснит то, что я хочу:
Когда я нажимаю на "Analytics", я хочу вызвать представление, которое может заполнить html-шаблон данными, которые я вычисляю из своих моделей, например, построить таблицу, которая подсчитывает мои экземпляры Campaigns и Components.
Что я сделал на данный момент: создал пользовательский AdminSite, чтобы перезаписать AdminSite по умолчанию. Проблема: я не вижу, чтобы моя опция появилась.
#admin.py
class MyAdminSite(admin.AdminSite):
def get_urls(self):
urls = super(MyAdminSite, self).get_urls()
custom_urls = [
path(r'myapi/test/', self.admin_view(testview)),
]
return urls + custom_urls
site_header = "My custom site"
admin_site = MyAdminSite(name="myadmin")
#apps.py
class MyAdminConfig(AdminConfig):
default_site = "myapi.admin.MyAdminSite"
#settings.py
INSTALLED_APPS = [
'rest_framework',
#'django.contrib.admin',
"myapi.apps.MyAdminConfig",
#views.py
@api_view(["GET", "POST"])
def testview(request):
print("testmyview")
return render(1, "mytest.html")
#urls.py
urlpatterns = [
path('admin/', admin_site.urls),
path('api/', include('myapi.urls')),
]
Я пытался следовать этому руководству: https://adriennedomingus.medium.com/adding-custom-views-or-templates-to-django-admin-740640cc6d42. но я думаю, что после перезаписи get_urls() я должен увидеть новую опцию, появляющуюся в моем Django Admin, чего не происходит.