2009-08-05 4 views
0

Je n'aime pas models.User, mais j'aime l'affichage d'administration, et je maintiendra l'affichage d'admin dans mon application.comment écraser le modèle d'utilisateur

Comment overwirte models.User? Faites simplement ressembler à ce qui suit:

from django.contrib.auth.models import User 

class ShugeUser(User) 
    username = EmailField(uniqute=True, verbose_name='EMail as your 
username', ...) 
    email = CharField(verbose_name='Nickname, ...) 

User = ShugeUser 

Répondre

4

Ce n'est pas possible en ce moment. Si tout ce que vous voulez est d'utiliser l'adresse email comme nom d'utilisateur, vous pouvez écrire un custom auth backend qui vérifie si la combinaison email/mot de passe est correcte au lieu de la combinaison nom d'utilisateur/mot de passe (here est un exemple de djangosnippets.org). Si vous voulez plus, vous devrez pirater assez mal Django, ou attendre que Django supporte mieux le sous-classement du modèle User (d'après this conversation sur la liste de diffusion django-users, cela pourrait arriver dès Django 1.2, mais ne comptez pas dessus).

0

La réponse ci-dessus est bonne et nous l'utilisons sur plusieurs sites avec succès. Je tiens également à souligner que bien des fois les gens veulent changer le modèle de l'utilisateur, ils ajoutent plus de champs d'information. Cela peut être pris en charge avec le support de profil utilisateur intégré dans le module d'administration contrib.

Vous accédez au profil en utilisant la méthode get_profile() d'un objet Utilisateur.

La documentation correspondante est disponible here.

Questions connexes