2009-05-19 46 views

Trả lời

5

Xem Customizing an Admin form in Django while also using autodiscover

Về cơ bản, bạn xác định lớp Quản trị tùy chỉnh với các tính năng bạn muốn.

Sau đó, hủy đăng ký và đăng ký lớp Quản trị viên đã sửa đổi của bạn.

admin.site.unregister(User) 
admin.site.register(User, MyUserAdmin) 
12

Kể từ phiên bản 1.3 nó có thể được thực hiện using this:

list_filter = ('groups__name') 

Dĩ nhiên như @ S. Lott giải thích bạn phải đăng ký lớp tùy chỉnh của bạn trong file admin.py:

from django.contrib import admin 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

class MyUserAdmin(UserAdmin): 
    list_filter = UserAdmin.list_filter + ('groups__name',) 

admin.site.unregister(User) 
admin.site.register(User, MyUserAdmin) 
+1

Rất tốt, cảm ơn! Nhưng nó hiển thị như "Theo tên" theo sau là danh sách các nhóm, mà là một chút khó hiểu, nó sẽ là tốt hơn nếu nó nói "Theo nhóm" – thnee

+0

Tôi đồng ý với @thnee. Nó có thể đạt được như thế này 'list_filter = ('groups',)' – laltin

4

Đây là một ví dụ hoàn chỉnh, kế thừa từ SimpleListFilter, có sẵn trong Django 1.4 trở lên.

https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter

Hỗ trợ thiết lập tất cả các nhãn và thông số có sẵn để tạo bộ lọc hoàn toàn tùy chỉnh.

Nó hiển thị dưới dạng "Theo nhóm" trong bảng lọc, với danh sách tất cả các nhóm hiện có.

from django.contrib.admin import SimpleListFilter 
from django.contrib.auth.models import Group 
from django.utils.translation import ugettext as _ 

class GroupListFilter(SimpleListFilter): 
    title = _('group') 
    parameter_name = 'group' 

    def lookups(self, request, model_admin): 
     items =() 
     for group in Group.objects.all(): 
      items += ((str(group.id), str(group.name),),) 
     return items 

    def queryset(self, request, queryset): 
     group_id = request.GET.get(self.parameter_name, None) 
     if group_id: 
      return queryset.filter(groups=group_id) 
     return queryset 

from django.contrib import admin 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

class MyUserAdmin(UserAdmin): 
    list_filter = UserAdmin.list_filter + (GroupListFilter,) 

admin.site.unregister(User) 
admin.site.register(User, MyUserAdmin) 
Các vấn đề liên quan