Здравствуйте.
Необходимо, чтобы при регистрации юзернейм и почта новосозданного юзера передавались модели профиля.
Использую стандартную форму регистрации.
models.py:
class Profile(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length = 100, default = 'user')
user_email = models.CharField(max_length = 100, default = 'no_email')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('user_view', args = [str(self.name)])
def save(self, *args, **kwargs):
self.name = self.user.username
super(Profile, self).save(*args, **kwargs)
forms.py:
class ProfileCreate(forms.ModelForm):
"""
A form that creates a user, with no privileges, from the given username and
password.
"""
error_messages = {
'password_mismatch': _("The two password fields didn't match."),
}
password1 = forms.CharField(
label=_("Password"),
strip=False,
widget=forms.PasswordInput,
)
password2 = forms.CharField(
label=_("Password confirmation"),
widget=forms.PasswordInput,
strip=False,
help_text=_("Enter the same password as before, for verification."),
)
email = forms.EmailField(required = True)
class Meta:
model = User
fields = ("username", "email",)
field_classes = {'username': UsernameField}
def __init__(self, *args, **kwargs):
super(ProfileCreate, self).__init__(*args, **kwargs)
if self._meta.model.USERNAME_FIELD in self.fields:
self.fields[self._meta.model.USERNAME_FIELD].widget.attrs.update({'autofocus': ''})
def clean_password2(self):
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError(
self.error_messages['password_mismatch'],
code='password_mismatch',
)
self.instance.username = self.cleaned_data.get('username')
password_validation.validate_password(self.cleaned_data.get('password2'), self.instance)
return password2
def save(self, commit=True):
user = super(ProfileCreate, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
Буду благодарен помощи и совету.