Ich habe einen Benutzer erweitert, um weitere Attribute speichern zu können. Jetzt versuche ich ein Registrierungsformular für dieses UserProfile
zu erstellen. Wie erstellt man ein Formular, das einen UserProfile
mit allen Attributen, Anforderungen usw. erstellt? Und machen first_name
, last_name
erforderlich.Registrierungsformular für erweiterte Benutzer löst Fehler
Es ist sehr ähnliche Frage ohne Antwort hier: link
Ich habe dies versucht, aber ohne Erfolg:
class UserRegistrationForm(UserCreationForm):
email = forms.EmailField(required = True)
first_name = forms.CharField(required = False)
last_name = forms.CharField(required = False)
class Meta:
model = UserProfile
fields = ('username', 'email', 'password1', 'password2')
def save(self,commit = True):
user = super(UserRegistrationForm, self).save(commit = False)
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.telephone = self.cleaned_data['telephone']
if commit:
user.save()
return user
immer diese Fehlermeldung:
class UserRegistrationForm(UserCreationForm):
File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\
lib\site-packages\django\forms\models.py", line 257, in __new__
raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) (username) specified for Use
rProfile
IST HIER A TEIL DER MODELLE UND ADMIN:
MODELS.PY:
class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
# ATRIBUTY KTORE BUDE MAT KAZDY
telephone = models.CharField(max_length=40)
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)
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)
def __unicode__(self):
return '{} {}'.format(self.first_name,self.surname)
def create_profile_user_callback(sender,instance, **kwargs):
profile, new = UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_profile_user_callback, User)
ADMIN.PY:
class UserProfileInline(admin.StackedInline):
model = UserProfile
can_delete = False
verbose_name_plural = 'User_Profile'
class UserAdmin(BaseUserAdmin):
inlines = (UserProfileInline,)
admin.site.unregister(User)
admin.site.register(User,UserAdmin)