2015-03-11 3 views
1

Я хочу, чтобы моя модель имела несколько list view конечных точек в администраторе django.django custom admin pages

Например, я хотел бы посмотреть all the blogs with more than 5 comments
all the blogs that has been shared

Как сделать несколько конечных точек в Джанго администратора? (в основном несколько querysets для одной модели класса)

Конечно, я могу использовать что-то вроде https://github.com/jsocol/django-adminplus, но это займет много часов, чтобы создать шаблоны ...

ответ

4

Создать несколько proxy models:

class SharedBlog(Blog): 

    class Meta: 
     proxy = True 
     verbose_name = 'shared blog' 

и переопределение get_queryset() Метод ModelAdmin:

class SharedBlogAdmin(admin.ModelAdmin): 

    def get_queryset(self, request): 
     qs = super(SharedBlogAdmin, self).get_queryset(request) 
     return qs.filter(shared=True) 

admin.site.register(SharedBlog, SharedBlogAdmin) 
+1

Отличное предложение. Я использовал этот метод много раз в прошлом. Это самый быстрый способ найти дополнительные виды списков. – Brandon

+0

btw, Есть ли способ передать параметр на страницы с питанием от администратора? так что вы можете запросить параметры pass-in. – eugene

+1

Вы можете передать любой желаемый параметр GET. Практически все методы ModelAdmin имеют «запрос» как один из аргументов, поэтому вы можете получить параметры из словаря 'request.GET'. – catavaran