0

我使用 Profiles 扩展了 Django 中的 User 模型。如您所知,创建新用户不会创建链接到该用户的新配置文件,因此我们需要添加一个辅助方法,如下所示:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    field_to_be_updated = models.DateTimeField(auto_now_add=True)

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u))

这很好用,但我希望能够以我可以做的方式User.objects.all[0].profile.update_a_field()或类似的方式调用 UserProfile 类中的方法,例如 update_a_field。

我试图为 UserProfile 类创建一个 Manager 无济于事。它只是无法识别我附加到类的方法。似乎 UserProfile 不是常规模型,因为它不能被 UserProfile.objects 访问......

那么,如何添加方法来更新 UserProfile 实例?我应该向 User 模型添加一个方法,然后以这种方式访问​​ UserProfile 吗?

4

1 回答 1

1

我不确定为什么,但我的经验是:

不工作

user.profile.field = "value"
user.profile.save()

有效

profile = user.profile
profile.field = "value"
profile.save()
于 2012-01-20T22:21:15.670 回答