Django créer des UserCreationForm
J'ai activé le module d'authentification de l'utilisateur dans Django, mais lorsque j'utilise UserCreationForm
il me le seul nom d'utilisateur et les deux mot de passe/mot de passe de confirmation des champs. Je veux également un e-mail et le nom complet de champs, et sur les champs requis.
J'ai fait ceci:
from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.models import User
class RegisterForm(UserCreationForm):
email = forms.EmailField(label = "Email")
fullname = forms.CharField(label = "Full name")
class Meta:
model = User
fields = ("username", "fullname", "email", )
Maintenant le formulaire de montrer les nouveaux champs mais il n'est pas de les enregistrer dans la base de données.
Comment puis-je résoudre ce problème?
OriginalL'auteur Joaquin McCoy | 2011-04-21
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de tel champ appelé
fullname
dans le modèle de l'Utilisateur.Si vous souhaitez mémoriser le nom à l'aide du modèle d'origine, alors vous devez les stocker séparément, en tant que de nom et de prénom.
Edit: Si vous voulez juste un champ dans le formulaire et de toujours utiliser la version originale du modèle Utilisateur, utilisez la commande suivante:
Vous pouvez faire quelque chose comme ceci:
Maintenant que vous avez à faire ce que manji a dit et remplacer la méthode save, mais depuis, le modèle de l'Utilisateur ne dispose pas d'un champ nom complet, il devrait ressembler à ceci:
Remarque: Vous devez ajouter un propre méthode pour le champ nom complet qui permettra de s'assurer que les nom et prénom saisi contient seulement deux parties, le prénom et le nom, et qu'elle a des caractères valides.
Code Source de référence pour l'Utilisateur Modèle:
Je ne suis pas tout à fait sûr que je le suis... vous voulez dire que Vous voulez avoir juste un champ dans le formulaire pour le nom complet, mais vous ne vous inquiétez pas si il est enregistré ou pas? Ou êtes-vous demander comment faire pour avoir un champ nom complet et être encore capable d'enregistrer en utilisant le modèle de l'Utilisateur?
Je veux un champ "nom Complet" dans le formulaire, mais je veux l'enregistrer dans un champ nom complet sur le modèle de l'Utilisateur. Si je ne peux pas diviser le champ nom complet pour enregistrer dans le prenom et le nom des champs dans le modèle.
Comment faire pour remplacer le standard UserCreationForm? J'ai créé un utilisateur personnalisée d'admin et de définir la add_form = CustomUserCreationForm, mais il ne s'affiche pas quand je vais pour ajouter un utilisateur dans la page d'administration.
Vous devez également avoir à remplacer le modèle standard de la page je pense. C'est une excellente ressource sur le sujet et vous pouvez probablement trouver votre réponse. Je ne peux malheureusement pas aider trop à droite maintenant, depuis que je suis au travail mais je vais voir si j'ai le temps de faire quelque chose à la maison.
OriginalL'auteur chandsie
Vous devez remplacer les
UserCreationForm.save()
méthode:OriginalL'auteur manji
Je viens de signer pour un compte sur StackOverflow, et donc de ne pas les points requis pour répondre directement aux mains de réponse. Cependant, soyez prudent avec la ligne de code suivante:
Cela soulève 'ValueError: trop de valeurs pour décompresser" si fullname est quelque chose comme "Foo Bar Baz" (par exemple, les deux instances de l'espace si votre utilisateur dispose d'un prénom). J'utilise une légère variation qui fourre tout après le premier espace dans le nom.
OriginalL'auteur Sahil Tandon
Dans django 1.10 c'est ce que j'ai écrit dans admin.py pour ajouter prenom, e-mail et nom à la par défaut de django utilisateur formulaire de création de
OriginalL'auteur Lucas B