Django будет отображать это представление в индексе администратора - PullRequest
1 голос
/ 26 апреля 2011

Будет ли это представление отображаться как ссылка в индексе администратора в части, называемой модулями? Какой пользователь может щелкнуть ссылку, как обычный класс администратора, чтобы просмотреть представление?

У меня есть класс с именем 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'), 
...