2016-03-26 8 views
0

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) 

Antwort

0

Ihr Formular enthält kein Attribut Benutzername, noch unter Meta gibt es Benutzernamen enthalten. Versuchen Sie, Benutzername in Ihrem Formularfeld hinzuzufügen.

Verwandte Themen