2017-09-12 3 views
0

Userデータを使用してUserProfileを作成するときは、first_nameとlast_nameにも渡します。Django UserProfile signalsは、ユーザー、first_name、last_nameを作成します。

は、ここで私はこのUserProfile.objects.create(user=instance, first_name=instance.first_name, last_name=instance.last_name)を使用してみました

class UserProfile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL) 
    first_name = models.CharField(max_length=200, blank=True, null=True, default=None) 
    last_name = models.CharField(max_length=200, blank=True, null=True, default=None) 

def post_save_user(sender, instance, created, **kwargs): 
    if created: 
     UserProfile.objects.create(user=instance) 


post_save.connect(post_save_user, sender=settings.AUTH_USER_MODEL) 

私のmodels.pyで、それは、プロファイルを作成していますが、それはFIRST_NAMEとLAST_NAMEを追加していません。

質問:ユーザーデータを使用してプロファイルにfirst_nameとlast_nameを追加するにはどうすればよいですか?

+1

プロファイルにfirst_nameとlast_nameを入れるのはどういう意味ですか?それらはすでにユーザーモデルで利用可能です。 –

+0

ええ、そうだね、ちょっと好奇心旺盛だった –

答えて

-1

あなたは魔法を期待していませんか?このようなものを使用して信号受信機を拡張してみてください。

def post_save_user(sender, instance, created, **kwargs): 
    if created: 
     UserProfile.objects.create(
      user=instance, 
      first_name=instance.first_name, 
      last_name=instance.last_name, 
     ) 

しかし、正直、この答えは、ゴミ箱に属している:@ダニエル・ローズマンは、すでに指摘したように、あなたは、冗長データを保存します。別のUserProfileモデルを実際に使用する場合は、auth.Userモデルに格納されたデータで動作するfirst_namelast_name@property(おそらくは@_.setter)にすることを検討してください。

関連する問題