スタッフステータスとスーパーユーザステータスでフィルタリングできますが、グループはどうですか?Djangoの管理者で、グループ別にユーザーをフィルタリングする方法は?
5
A
答えて
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)
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)
ニース、ありがとう!しかし、それは "名前で"続いてグループのリストが続き、ちょっと混乱しています。 "グループ別に"と言った方が良いでしょう。 – thnee
私は@thneeに同意します。これは 'list_filter =( 'groups'、)'のように実現できます。 – laltin