2009-05-19 4 views

답변

5

당신은 당신이 원하는 기능을 사용자 정의 된 관리 클래스를 정의, 기본적으로 Customizing an Admin form in Django while also using autodiscover

를 참조하십시오.

그런 다음 수정 된 Admin 클래스를 등록 취소하고 등록하십시오. 버전 1.3이이 using this 할 수 있기 때문에

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

는 :

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

니스, 감사합니다. 그러나 "이름 옆에"다음에 그룹 목록이 표시됩니다. 다소 혼란 스럽습니다. "그룹 별"이라고 말하면 더 나을 것입니다. – thnee

+0

@thnee에 동의합니다. 이것은'list_filter = ('groups',)'와 같이 달성 될 수 있습니다. – laltin

4
: @로 물론

list_filter = ('groups__name') 

를 S. 로트 당신이 admin.py 파일에 사용자 정의 클래스를 등록해야합니다 설명

다음은 Django 1.4 이상에서 사용 가능한 SimpleListFilter를 상속 한 완전한 예제입니다.

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

그것은 완전히 사용자 정의 필터를 만드는 데 사용할 수있는 모든 라벨 및 매개 변수를 설정 지원합니다.

필터 패널에 "그룹 별"으로 표시되며 사용 가능한 모든 그룹의 목록이 표시됩니다.

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) 
관련 문제