2010-11-08 7 views
0

Dans django/django/contrib/auth/forms.py comment remplacer la méthode par défaut et inclure la même chose dans le module utilisateurs?Django remplacer les fonctionnalités par défaut

Donc, mon intention est que je veux changer la longueur du champ de nom d'utilisateur à 64 caractères, mais ce ne serait pas correct de le faire dans les annuaires django, parce que chaque fois qu'une nouvelle version est téléchargé ce fichier doit changé ....

Quelle shoudl exactement être changé pour ce faire

class AuthenticationForm(forms.Form): 
""" 
Base class for authenticating users. Extend this to get a form that accepts 
username/password logins. 
""" 
username = forms.CharField(label=_("Username"), max_length=30) 
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput) 
+0

Qu'est-ce que vous essayez de remplacer exactement? Quel est le problème? –

+0

S'il vous plaît voir l'édition – Hulk

+0

N'oubliez pas de 'ALTER' votre schéma de table utilisateur de votre SGBD. Parce que le champ 'usename' de' auth_user' est long de 30 caractères, et toute chaîne de plus de 30 entraînera une erreur au niveau de la base de données. – FallenAngel

Répondre

0

Si je comprends bien, vous pourriez être en mesure de le changer par sous-classing AuthenticationForm en exemple MyAuthenticationForm:

class MyAuthenticationForm(AuthenticationForm): 
    username = forms.CharField(label=_("Username"), max_length=64) 

De cette façon, vous garderait les validateurs de AuthenticationForm, mais toujours laisser le nom d'utilisateur de 64 caractères.

+0

Cela peut-il être fait pour le champ de nom d'utilisateur seulement ?? Si c'est le cas, je peux aussi surcharger le nom d'utilisateur du module Utilisateur() pour avoir aussi 64 caractères. – Hulk

+0

@Hulk: Non, vous ne pouvez fondamentalement pas changer un modèle existant comme ça, du moins pas facilement. –

+0

K merci pour l'instant je voudrais faire les changements dans django – Hulk

1

@Deniz Dogan: Vous devez également convaincre vue de connexion à utiliser le formulaire personnalisé:

login(request, authentication_form=MyAuthenticationForm) 
Questions connexes