Настройка админки django. Проблема с представлениями без модели
Я пытаюсь создать дополнительное представление в админке django, на левой панели навигации. Это представление будет отвечать за загрузку файла, который будет анализироваться в некоторой функции (в будущем я хотел бы отображать результат этого парсинга на странице админки). Этот файл не будет сохранен в базе данных, поэтому модели не будет. Есть ли возможность добавить представление в django admin (левая панель навигации), у которого нет модели? Я много читал, но так и не смог найти решение. Что я сделал на данный момент:
- Создал класс, который наследуется от AdminSite. Я попытался реализовать метод get_app_list, но переменная self._build_app_dict(request) оказалась пустым массивом, а это значит, что метод не смог найти установленные aps. Я хотел добавить новый объект в переменную app_list, чтобы отобразить его на сайте.
- Пытался переопределить шаблоны админки, но не смог их отобразить. Я пытался переопределить app_index.html, который я положил в папку: app_name/templates/admin/app_index.html .
Вот мой код, который, конечно же, не работает:
class MyCustomAdmin(AdminSite):
def get_app_list(self, request):
"""
Return a sorted list of all the installed apps that have been
registered in this site.
"""
app_dict = self._build_app_dict(request)
breakpoint()
app_list = sorted(app_dict.values(), key=lambda x: x['name'].lower())
for app in app_list:
app['models'].sort(key=lambda x: x['name'])
return app_list
def get_urls(self):
from django.conf.urls import url
urls = super(MyCustomAdmin, self).get_urls()
urls += [
url(r'^my_custom_view/$', self.admin_view(MyCustomView.as_view()))
]
return urls
class MyCustomView(View):
template_name = 'admin/app_index.html'
def get(self, request):
print('fefef')
return render(request, self.template_name, {})
def post(self, request):
pass
admin_site = MyCustomAdmin()
admin_site.get_app_list(AdminSite.get_app_list)