当我使用用户数据创建UserProfile时,我也希望传递给first_name和last_name。
这是我的models.py
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)
我已经尝试使用UserProfile.objects.create(user=instance, first_name=instance.first_name, last_name=instance.last_name)
,它正在创建配置文件,但它没有添加first_name和last_name。
问题:如何使用用户数据将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,
)
但是,老实说,这个答案属于垃圾桶:正如@ daniel-roseman已经指出的那样,你存储了冗余数据。如果您真的希望有单独的UserProfile
模型,请考虑将first_name
和last_name
设为@property
(可能与@_.setter
一起使用数据存储在auth.User
模型中。