2009-05-19 6 views

答えて

5

は基本的にCustomizing an Admin form in Django while also using autodiscover

を参照してください、あなたが望む機能をカスタマイズした管理クラスを定義します。

次に、改訂されたAdminクラスの登録を解除して登録します。

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

それはusing thisを行うことができますバージョン1.3以来:

もちろん
list_filter = ('groups__name') 

S.Lottあなたは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

ニース、ありがとう!しかし、それは "名前で"続いてグループのリストが続き、ちょっと混乱しています。 "グループ別に"と言った方が良いでしょう。 – thnee

+0

私は@thneeに同意します。これは 'list_filter =( 'groups'、)'のように実現できます。 – laltin

4

ここでは、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) 
関連する問題