Будет ли это представление отображаться как ссылка в индексе администратора в части, называемой модулями? Какой пользователь может щелкнуть ссылку, как обычный класс администратора, чтобы просмотреть представление?
У меня есть класс с именем ListAdmin в Admin.py:
class ListAdmin(admin.ModelAdmin):
def list_view(self, request):
return question_list(request)
def get_urls(self):
urls = super(ListAdmin, self).get_urls()
list_urls = patterns('', r'^list/$', self.list_view())
return list_urls + urls
Вид находится в view.py
def question_list(request):
#questions = Question.objects.filter(topic__icontains = 1)
questions = Question.objects.all()
return render_to_response('admin/question_list.html', {'questions':questions})
question_list = staff_member_required(question_list)
Проблема в том, что я не знаю, как зарегистрировать ListAdmin в администраторе, потому что у него нет модели списка, а модель Вопроса уже зарегистрирована.
admin.site.register(???, ListAdmin)
Возможное решение:
Несколько ModelAdmin / представлений для одной и той же модели в админке Django
Я добавил это в свой admin.py, он успешно добавил ссылку в индекс администратора:
class List(Question):
class Meta:
proxy = True
class ListAdmin(QuestionAdmin):
def list_view(self, request):
return question_list(request)
admin.site.register(List, ListAdmin)
Я все еще думаю, что это неправильно, потому что если я возьму строку из url.py, приведенную ниже, она будет перенаправлена на модель Вопроса:
url(r'^admin/modules/list/$', 'exam.admin.modules.views.question_list'),