2009-05-19 7 views

Répondre

12

Depuis la version 1.3, il peut être fait using this:

list_filter = ('groups__name') 

Bien sûr que @ vous explique S. Lott devez enregistrer votre classe personnalisée dans le fichier 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

Nice, merci! Mais il apparaît comme "By name" suivi de la liste des groupes, ce qui est un peu déroutant, ce serait mieux s'il disait "By group" – thnee

+0

Je suis d'accord avec @thnee. Cela peut être réalisé comme ceci 'list_filter = ('groups',)' – laltin

4

Voici un exemple complet, qui hérite de SimpleListFilter, qui est disponible dans Django 1.4 et plus.

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

Elle soutient la mise en toutes les étiquettes disponibles et les paramètres pour créer le filtre complètement personnalisé.

Il apparaît comme « Par groupe » dans le panneau de filtre, avec une liste de tous les groupes disponibles.

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) 
Questions connexes