2010-06-01 14 views
1

Je forme hérité du modèle d'utilisateur django comme ceci:héritage des résultats du modèle d'utilisateur django en erreur lors du changement de mot de passe

from django.db import models 
from django.contrib.auth.models import User, UserManager 
from django.utils.translation import ugettext_lazy as _ 

class NewUserModel(User): 
    custom_field_1 = models.CharField(_('custom field 1'), max_length=250, null=True, blank=True) 
    custom_field_2 = models.CharField(_('custom field 2'), max_length=250, null=True, blank=True) 

    objects = UserManager() 

Quand je vais à l'admin et ajouter une entrée dans ce modèle, il enregistre très bien, mais sous le champ "Mot de passe" où il a ce texte "Utiliser '[algo] $ [salt] $ [hexdigest]' ou utiliser le formulaire de changement de mot de passe.", si je clique sur le lien cette erreur

Truncated incorrect DOUBLE value: '7/password' 

Que puis-je faire pour résoudre ce problème?

Répondre

1

La meilleure façon d'étendre le modèle User de Django est de créer un nouveau modèle Profile et de l'identifier via le paramètre AUTH_PROFILE_MODULE. Voir http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/ et http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

Ceci ajoute une méthode get_profile() aux instances d'utilisateur qui récupère votre modèle associé pour un utilisateur donné.

+0

mais je ne veux pas remplacer le profil utilisateur actuel, car je dois étendre le modèle utilisateur pour servir plusieurs types de profils différents – Jerome

+0

Cette exigence modifie considérablement la portée de votre question - je pense qu'il serait préférable d'ouvrir un nouveau détaillant vos exigences de profil multiples. –

0

Bien que faisable (je l'ai fait une fois et le regrette) en utilisant l'héritage pour étendre le modèle de l'utilisateur n'est pas la meilleure idée. Je vous suggère de suivre les conseils de Chris et d'étendre le modèle User avec une relation 1-1, car c'est la manière «standard» et «prise en charge» de le faire, et la manière dont les applications réutilisables traitent les profils utilisateur. Sinon, vous devez implémenter un backend d'authentification si vous voulez le faire par héritage. Donc, si vous devez le faire, voyez this. Mais attention, vous rencontrerez d'autres problèmes plus tard.

Questions connexes