Django -Surcharger le modèle User de Django
26 nov. 2020
Lorsque vous avez une gestion des utilisateurs qui est proche de celle de Django, il est possible d'étendre cette dernière en lui ajoutant des propriétés personnalisées.
Ce tutoriel considère que vous démarrez une nouvelle application.
Dans un 1er temps il faut installer l'application et lancez
ATTENTION : ne pas lancer un
Maintenant il faut créer le nouveau profil qui héritera du modèle User de django au travers AbstractUser
Ensuite il faut ajouter dans le settings.py, la valeur correspondante au nom de votre application et le nom du modèle
Il est temps maintenant de préparer les changements à appliquer
et de faire la migration
IMPORTANT : Si le migrate ne fonctionne pas il faut supprimer toutes les tables sauf django_migrations et vider le contenu de cette table. Puis refaire un migrate.
Maintenant que le modèle est appliqué en base de données nous allons l'utiliser dans la partie admin
Il est IMPORTANT de mettre from myApp.models.user_profil import UserProfil avant les imports django.contrib.auth sinon vous aurez une erreur de ce type
UserProfilForm est la page à afficher pour la création d'un utilisateur

Tandis que UserProfilChangeForm sera utilisé pour la mise à jour d'un utilisateur.

Retrouvez cet exemple sur lequel je me suis appuyé dans la documentation de Django
blog comments powered by Disqus
Ce tutoriel considère que vous démarrez une nouvelle application.
Nouvelle application
Dans un 1er temps il faut installer l'application et lancez
python manage.py migrate
ATTENTION : ne pas lancer un
python manage.py makemigration
car on veut modifier le modèle User avantMise à jour du profil
Maintenant il faut créer le nouveau profil qui héritera du modèle User de django au travers AbstractUser
Ensuite il faut ajouter dans le settings.py, la valeur correspondante au nom de votre application et le nom du modèle
AUTH_USER_MODEL = 'myApp.UserProfil'
Migration
Il est temps maintenant de préparer les changements à appliquer
python manage.py makemigrations
et de faire la migration
python manage.py migrate
IMPORTANT : Si le migrate ne fonctionne pas il faut supprimer toutes les tables sauf django_migrations et vider le contenu de cette table. Puis refaire un migrate.
Configuration de l'administration de django
Maintenant que le modèle est appliqué en base de données nous allons l'utiliser dans la partie admin
Il est IMPORTANT de mettre from myApp.models.user_profil import UserProfil avant les imports django.contrib.auth sinon vous aurez une erreur de ce type
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'myApp.UserProfil' that has not been installed
Résultat affiché dans la page d'administration
UserProfilForm est la page à afficher pour la création d'un utilisateur

Tandis que UserProfilChangeForm sera utilisé pour la mise à jour d'un utilisateur.

Retrouvez cet exemple sur lequel je me suis appuyé dans la documentation de Django