Quiero crear un formulario SOLA que le da la capacidad de la administración para crear un nuevo usuario con perfil extendido. Tenga en cuenta que no quiero usar aplicaciones de administración y registro. He extendido el usuario con el modelo de perfil de usuario. He leído todos los documentos relacionados con la extensión del perfil de usuario. Pero, realmente no sé cómo guardar esta información. codifiqué el siguiente formulario de Django para este problema:Creación de un formulario de usuario Agregar en Django
class CreateUserForm(forms.Form):
username = forms.CharField(max_length=30)
first_name = forms.CharField()
last_name = forms.CharField()
password1=forms.CharField(max_length=30,widget=forms.PasswordInput()) #render_value=False
password2=forms.CharField(max_length=30,widget=forms.PasswordInput())
email=forms.EmailField(required=False)
title = forms.ChoiceField(choices=TITLE_CHOICES)
def clean_username(self): # check if username dos not exist before
try:
User.objects.get(username=self.cleaned_data['username']) #get user from user model
except User.DoesNotExist :
return self.cleaned_data['username']
raise forms.ValidationError("this user exist already")
def clean(self): # check if password 1 and password2 match each other
if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:#check if both pass first validation
if self.cleaned_data['password1'] != self.cleaned_data['password2']: # check if they match each other
raise forms.ValidationError("passwords dont match each other")
return self.cleaned_data
def save(self): # create new user
new_user=User.objects.create_user(username=self.cleaned_data['username'],
first_name=self.cleaned_data['first_name'],
last_name=self.cleaned_data['last_name'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'],
)
return new_user
¿Está bien? sin embargo, me da un error en first_name y last_name. Django dice que no espera first_name y last_name en el método save().
No estoy seguro de que tenga acceso al método 'save' a través de un formulario normal. Está disponible en la forma del modelo seguro https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method – super9