2011-11-13 12 views
6

Używam niestandardowej Admin przez:Korzystanie przerwy Administrator zwyczaj Obsługi zmienić formę hasło admin Django

class CustomUserAdmin(admin.ModelAdmin): 
    model = User 
    ... 
admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 

ale gdy próbuję zmienić hasło za pośrednictwem strony administratora dostaję 404.

user object with primary key u'4/password' does not exist. 

Przywrócenie domyślnego ustawienia Administrator użytkownika działa poprawnie.

Odpowiedz

16

Domyślnie UserAdmin w django.contrib.auth.admin realizuje wiele funkcji, w tym stronę z hasłem zmiany.

Twoja powinna być podklasą UserAdmin zamiast admin.ModelAdmin, chyba że chcesz ponownie wdrożyć tę funkcję samodzielnie.

class CustomUserAdmin(UserAdmin): 
    # as an example, this custom user admin orders users by email address 
    ordering = ('email',) 

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

To działało dla mnie, ale posiadanie tego kodu: exclude = ('is_superuser', 'user_permissions') powoduje jego rozbicie. – wenbert

+1

@wenbert musisz zastąpić 'zestawy pól'. Zarówno is_superuser, jak i user_permissions są zawarte w 'UserAdmin.fieldsets'. Nie można zawrzeć pola w zestawach pól, a następnie go wykluczyć. – Alasdair

1

również:

Zgodnie the docs, jeśli dziedziczą AbstractBaseUser nie można użyć domyślnego UserAdmin; lub inaczej, możesz, ale działa tylko podzbiór funkcji - zmiana istniejącego hasła może działać, ale dodanie nowego użytkownika spowoduje wyjątki.