2017-08-12 5 views
0

私はdjangoの初心者です。管理者がユーザーを作成するとき、EmailAddressモデルにいくつかのフィールドを保存しようとしていますが、なんらかの理由でemailフィールドは常に空白です。メールでUserProfileまたはEmailAddressというモデルでインスタンスを更新する方法はありますか?ユーザーがdjangoで作成された後に別のモデルでメールを受信

class SignUpForm(forms.Form): 
    first_name = forms.CharField(max_length=30) 
    last_name = forms.CharField(max_length=30) 
    phone_number = PhoneNumberField(label=_("Phone (Please state your country code eg. +44)")) 
    organisation = forms.CharField(max_length=50) 
    email = forms.EmailField() 
    password1 = forms.CharField(max_length=20) 
    password2 = forms.CharField(max_length=20) 
    captcha = ReCaptchaField(attrs={'theme' : 'clean'}) 


    def signup(self, request, user): 
     user.first_name = self.cleaned_data['first_name'] 
     user.last_name = self.cleaned_data['last_name'] 
     up = user.profile 
     up.phone_number = self.cleaned_data['phone_number'] 
     up.organisation = self.cleaned_data['organisation'] 
     user.save() 
     up.save() 

すべてのヘルプは高く評価される - この

User._meta.get_field('email').blank = False 
User._meta.get_field('email')._unique = True 


class EmailAddress(models.Model): 
    user = models.OneToOneField(User, unique=True, related_name ='address') 
    email = models.EmailField() 
    verified = models.BooleanField(verbose_name=_('verified'), default=True) 
    primary = models.BooleanField(verbose_name=_('primary'), default=True) 

    class Meta: 
     db_table = 'account_emailaddress' 


class UserProfile(models.Model, HashedPk): 
    user = models.OneToOneField(User, unique=True, related_name ='profile') 
    job_title = models.CharField(max_length=128, blank=True, null=False, default="") 
    website = models.URLField(max_length=255, blank=True, null=True) 
    organisation = models.CharField(max_length=50, blank=True, null=True, default="") 
    phone_number = PhoneNumberField(blank=True, null=True) 


@receiver(post_save, sender=User) 
def create_profile(sender, instance, created, **kwargs): 
    if created: 
     UserProfile.objects.create(user=instance) 
     EmailAddress.objects.create(user=instance) 

forms.pyはこのようになりますように

models.pyに見えます。

+0

である必要がありますあなたのEmailAddressモデルには電子メールフィールドがありませんか? –

+0

申し訳ありませんモデルを更新しました。しかし、私は空白の価値を得る。 –

+0

あなたのviews.pyを表示できますか?フォームにサインアップをしているところはどこですか? – Pblove

答えて

0

ソート済みです。それは

EmailAddress.objects.create(user=instance, email=instance.email) 
関連する問題