Ich versuche ein Registrierungsformular zu erstellen, das User
und seine UserProfile
registriert. Das Problem ist, dass Django
besagt, dass username
nicht verfügbar ist. Ich möchte (beide von integrierten in User
und UserProfile
)Unbekannte Felder (Benutzername) für UserProfile - Django
django.core.exceptions.FieldError: Unknown field(s) (username) specified for Use
rProfile
Ich möchte enthält alle Attribute bilden.
Was damit zu tun? Ich weiß, dass das Problem ist, weil ich UserCreationForm.Meta.fields
hinzugefügt habe, aber wie man es funktioniert? Dies scheint eine klare und einfache Lösung zu sein.
Dies ist die Form:
class UserProfileCreationForm(UserCreationForm):
password1 = forms.CharField(label="Password", widget=forms.PasswordInput)
password2 = forms.CharField(label="Password confirmation", widget=forms.PasswordInput)
class Meta(UserCreationForm.Meta):
model = UserProfile
fields = UserCreationForm.Meta.fields + ('date_of_birth','telephone','IBAN',)
def clean_password2(self):
# Check that the two password entries match
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
msg = "Passwords don't match"
raise forms.ValidationError("Password mismatch")
return password2
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.set_password(self.cleaned_data["password1"])
if commit:
user.save()
return user
USERPROFILE MODUL:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='user_data')
date_of_birth = models.DateField()
telephone = models.CharField(max_length=40)
IBAN = models.CharField(max_length=40)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
MARITAL_STATUS_CHOICES = (
('single', 'Single'),
('married', 'Married'),
('separated', 'Separated'),
('divorced', 'Divorced'),
('widowed', 'Widowed'),
)
marital_status = models.CharField(max_length=40, choices=MARITAL_STATUS_CHOICES, null=True, blank=True)
HOW_DO_YOU_KNOW_ABOUT_US_CHOICES = (
('coincidence', u'It was coincidence'),
('relative_or_friends', 'From my relatives or friends'),
)
how_do_you_know_about_us = models.CharField(max_length=40, choices=HOW_DO_YOU_KNOW_ABOUT_US_CHOICES, null=True,
blank=True)
# TRANSLATOR ATTRIBUTES
is_translator = models.BooleanField(default=False)
language_tuples = models.ManyToManyField(LanguageTuple)
rating = models.IntegerField(default=0)
number_of_ratings = models.BigIntegerField(default=0)
def __unicode__(self):
return '{} {}'.format(self.user.first_name, self.user.last_name)
def __str__(self):
return '{} {}'.format(self.user.first_name, self.user.last_name)
Danke Daniel. Also meinst du, ich sollte einen CustomUserMode erstellen (User, UserProfile): pass? Funktionieren Authentifizierung und ähnliches so, wie es funktionieren sollte? –