8

スタッフのステータスとスーパーユーザーのステータスでフィルターできますが、グループはどうでしょうか?

4

4 に答える 4

13

バージョン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)
于 2011-10-22T14:33:08.317 に答える
5

自動検出を使用しながら Django で管理フォームをカスタマイズするを参照してください。

基本的に、必要な機能を備えたカスタマイズされた Admin クラスを定義します。

次に、修正した Admin クラスの登録を解除して登録します。

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
于 2009-05-19T02:15:36.680 に答える
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)
于 2013-04-13T19:39:58.787 に答える