2010-07-23 4 views
4

Django 1.2 ajoute de nouveaux symboles autorisés aux noms d'utilisateur, ce qui signifie que les noms d'utilisateur peuvent simplement être des adresses e-mail. Jusqu'à présent, j'ai utilisé le UserCreationForm intégré pour l'enregistrement - comment puis-je le modifier pour étiqueter le champ 'nom d'utilisateur' le champ 'email'? Et comment ajouter aussi des champs supplémentaires (mais toujours des objets utilisateur) tels que les noms et prénoms? (Et comment les rendre facultative?)Personnalisation de UserCreationForm pour l'adresse e-mail comme nom d'utilisateur dans Django 1.2

Dois-je être en train de modifier la UserCreationForm dans cette mesure ou suis-je mieux partir de zéro (et si celui-ci, comment?)

Merci.

Répondre

2

Pour changer l'étiquette du champ e-mail, vous pouvez créer une sous UserCreationForm comme suit

from django import forms 
from django.utils.translation import ugettext_lazy as _ 
from django.contrib.auth.forms import UserCreationForm 

class MyUserCreationForm(UserCreationForm): 
    username = forms.RegexField(label=_("Email"), max_length=30, regex=r'^[\[email protected]+-]+$', 
     help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."), 
     error_messages = {'invalid': _("This value may contain only letters, numbers and @/./+/-/_ characters.")}) 

Ajout prenom et champs nom_famille est pas si facile, car ne prend que le nom d'utilisateur de méthode de sauvegarde du formulaire, e-mail et mot de passe . Deux possibilités sont:

  • override sauver de la forme méthode
  • affichage un UserChangeForm une fois que l'utilisateur a été créé (ce que l'application d'administration de Django ne)
+0

avait des difficultés à mettre en œuvre, je pris sur les caractères de soulignement (_) devant les chaînes (traduites?), et cela a bien fonctionné. – 0atman

+1

de django.utils.translation import ugettext_lazy comme _ – Renyi

+0

Merci pour les commentaires. J'ai ajouté la déclaration d'importation à ma réponse. – Alasdair

Questions connexes