2010-02-16 17 views

Odpowiedz

71

I wreszcie zrobił tak w moim pliku admin.py:

from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff') 

admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 
+8

Możemy również rozszerzyć UserAdmin zamiast dynamicznie go modyfikować! – Natim

+4

Aby to wyjaśnić, należy go dodać do głównego pliku administracyjnego administratora witryny. –

+1

Czy mogę zapytać, co masz na myśli przez najwyższy poziom? –

-3

Zakładając, że klasa użytkownika jest User i data field subskrypcja jest , to co trzeba dodać na własną admin.py

class UserAdmin(admin.ModelAdmin): 
    list_display = ('subscription_date',) 

admin.site.register(User, UserAdmin) 
+0

ten może pracować nawet z auth.User Buildin? – Natim

+5

Powinno to odziedziczyć po wbudowanym UserAdmin, w przeciwnym razie tracisz wszystkie pozostałe dostosowania. Musisz też wyrejestrować wbudowaną rejestrację; Odpowiedź Natima ma właściwy kod. –

13

Innym sposobem na to jest rozszerzenie klasy UserAdmin.

Można również utworzyć funkcję umieścić na list_display

from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

class CustomUserAdmin(UserAdmin): 
    def __init__(self, *args, **kwargs): 
     super(UserAdmin,self).__init__(*args, **kwargs) 
     UserAdmin.list_display = list(UserAdmin.list_display) + ['date_joined', 'some_function'] 

    # Function to count objects of each user from another Model (where user is FK) 
    def some_function(self, obj): 
     return obj.another_model_set.count() 


admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 
+0

Czy mogę wykonać następujące czynności (bez '__init__'), czy jest z tym jakiś problem ? 'class CustomUserAdmin (UserAdmin): list_display = list (UserAdmin.list_display) + ['date_joined'] – jdm