2016-03-26 34 views
0

Daha fazla özniteliği depolayabilmek için bir Kullanıcı genişlettim. Şimdi, bu UserProfile için bir kayıt formu oluşturmaya çalışıyorum. Tüm özniteliklere, gereksinimlere vb. Sahip bir UserProfile oluşturan form nasıl oluşturulur? Ve first_name, last_name'u gerekli kılın.Uzun kullanıcı için kayıt formu hata veriyor

burada cevap bile vermeden çok benzer bir soru var olduğu: link

Bu denedim ancak başarılı:

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 

bu hatayı alınıyor:

BURAYA
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 

bir IS MODEL VE ​​ADMIN PARÇASI:

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) 

cevap

0

Formunuz hiçbir özellik kullanıcı adı içeren, henüz Meta altında, kullanıcı adı dahil bulunmaktadır. Form alanınıza kullanıcı adı eklemeyi deneyin.

İlgili konular