52 votes

Comment personnaliser la page d'administration auth.User dans Django CRUD ?

Je veux juste ajouter la date d'abonnement dans la liste des utilisateurs dans le site d'administration CRUD de Django. Comment puis-je le faire ?

Merci pour votre aide

87voto

Natim Points 4393

J'ai finalement fait comme ceci dans mon fichier 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)

10 votes

Nous pouvons également étendre le UserAdmin au lieu de le modifier dynamiquement !

6 votes

Pour clarifier, ceci doit être ajouté au fichier admin.py de premier niveau de votre site.

1 votes

Puis-je vous demander ce que vous entendez par "niveau supérieur" ?

23voto

Une autre façon de procéder consiste à étendre la classe UserAdmin.

Vous pouvez également créer une fonction à mettre sur 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)

1voto

user5510975 Points 307

Dans admin.py

Importer UserAdmin

from django.contrib.auth.admin import UserAdmin

Mettez les champs dont vous avez besoin :

UserAdmin.list_display = ('email','is_active')  # Put what you need

C'est tout ! Il fonctionne avec Django3

-3voto

jpartogi Points 8253

En supposant que votre classe d'utilisateur est User et votre champ de date d'abonnement est subscription_date c'est ce que vous devez ajouter sur votre site web. admin.py

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

admin.site.register(User, UserAdmin)

5 votes

Il doit hériter du UserAdmin intégré, sinon vous perdez toutes les autres personnalisations. Et vous devez également désenregistrer l'enregistrement intégré ; la réponse de Natim contient le bon code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X