2010-03-24 3 views
5

Je voudrais changer d'admin pour un groupe, donc il montrerait combien d'utilisateurs sont là dans un certain groupe. Je voudrais afficher ceci dans la vue montrant tous les groupes, celui avant que vous entrez admin pour certain groupe. C'est possible? Je parle à la fois sur la façon de changer d'administrateur pour un groupe et comment ajouter une fonction à list_display.django: les utilisateurs du groupe d'affichage comptent dans l'admin

Répondre

8

Vous devez d'abord importer et sous-classer GroupAdmin de django.contrib.auth.admin. Dans votre sous-classe, définissez une méthode user_count. Ensuite, annulez l'enregistrement du modèle de groupe existant dans l'admin et réenregistrez le nouveau.

from django.contrib.auth.admin import GroupAdmin 
from django.contrib.auth.models import Group 

class GroupAdminWithCount(GroupAdmin): 
    def user_count(self, obj): 
     return obj.user_set.count() 

    list_display = GroupAdmin.list_display + ('user_count',) 

admin.site.unregister(Group) 
admin.site.register(Group, GroupAdminWithCount) 
+0

drôle, j'ai déjà ma propre GroupAdmin, juste oublié que je faisais quelque chose sur ce (plus facile ajout d'un utilisateur, puisque vous ne pouvez pas ajouter des utilisateurs à partir du groupe admin par défaut). Il y a si longtemps, j'ai simplement oublié ça .. Merci beaucoup pour votre aide :-) – gruszczy

+0

Ok, un champ apparaît, mais c'est toujours None et la fonction user_count n'est pas appelée. Une idée, pourquoi cela se passe-t-il? – gruszczy

+0

Oh, ça devrait être obj.user_set.count(), plutôt que self.user_set.count(). Maintenant ça marche :-) – gruszczy

Questions connexes