0

嗨,我有一个自定义UserProfile模型,我将使用它来存储特定于我的应用程序的用户数据:

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    ...

    def __unicode__(self):
        return self.user.username

django-registration用来抵抗和登录用户。

我的问题是 - 保存UserProfile对象时自动保存对象的最佳方法auth.User是什么?我可以假设UserProfile模型上的所有自定义字段都可以保存为 null 并稍后更新。

非常感谢任何帮助。

4

2 回答 2

1

Django Signals 可能是一个不错的选择。因此,每当保存用户对象时,它都会创建一个用户配置文件

class UserProfile(models.Model):
    user = models.OneToOneField(User)

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

post_save.connect(_create_user_profile, sender=User)
于 2012-11-05T19:37:14.790 回答
0

如果用户配置文件尚不存在,则创建用户配置文件:将其放入配置文件的模型文件中:

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

request.user.profile在您想访问它时使用。

于 2012-11-05T20:11:50.923 回答