2010-03-24 13 views
5

Vorrei cambiare amministratore per un gruppo, in modo da visualizzare quanti utenti ci sono in un determinato gruppo. Mi piacerebbe mostrarlo nella vista che mostra tutti i gruppi, quello prima di entrare nell'amministratore per un determinato gruppo. È possibile? Sto parlando sia di come cambiare l'amministrazione di un gruppo sia di come aggiungere la funzione a list_display.django: la visualizzazione degli utenti del gruppo conta nell'amministratore

risposta

8

Per prima cosa è necessario importare e sottoclasse GroupAdmin da django.contrib.auth.admin. Nella sottoclasse, definire un metodo user_count. Quindi, annullare la registrazione del modello di gruppo esistente dall'amministratore e registrare nuovamente quello nuovo.

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

divertente, ho già il mio amministratore gruppo, solo dimenticato, che stavo facendo qualcosa che (aggiunta utente più semplice, dal momento che non è possibile aggiungere gli utenti da amministratore gruppo predefinito). È stato tanto tempo fa che me ne sono semplicemente dimenticato .. Grazie mille per il tuo aiuto :-) – gruszczy

+0

Ok, appare un campo, ma è sempre None e la funzione user_count non viene chiamata. Qualche idea, perché sta succedendo questo? – gruszczy

+0

Oh, dovrebbe essere obj.user_set.count(), piuttosto che self.user_set.count(). Ora funziona :-) – gruszczy

Problemi correlati