扩展 Django 用户模型的属性错误?
Attribute error in extending django user model?
我以前做过这个并且运行良好。这是因为我正在使用 django2.0
吗?
models.py
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
....
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
我收到错误 AttributeError: 'User' object has no attribute 'profile'
。我不明白?
要访问与 ForeignKey
个人资料相关的所有反向,您需要使用 profile_set
。如果您需要获取并保存第一个相关对象,请尝试以下操作:
def save_user_profile(sender, instance, **kwargs):
instance.profile_set.first().save()
但在这种情况下我相信你最好使用OneToOneField
:
user = models.OneToOneField(User, on_delete=models.CASCADE)
它只允许创建一个相关的配置文件,并且还允许使用以下语法:
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
我以前做过这个并且运行良好。这是因为我正在使用 django2.0
吗?
models.py
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
....
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
我收到错误 AttributeError: 'User' object has no attribute 'profile'
。我不明白?
要访问与 ForeignKey
个人资料相关的所有反向,您需要使用 profile_set
。如果您需要获取并保存第一个相关对象,请尝试以下操作:
def save_user_profile(sender, instance, **kwargs):
instance.profile_set.first().save()
但在这种情况下我相信你最好使用OneToOneField
:
user = models.OneToOneField(User, on_delete=models.CASCADE)
它只允许创建一个相关的配置文件,并且还允许使用以下语法:
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()