用户注册时,Django保存施虐者配置文件对象



嗨,我有一个自定义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来重新设置和登录用户。

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

任何帮助。

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

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)

如果还不存在,则创建一个用户配置文件:将其放入您的个人资料模型文件中:

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

并使用例如request.user.profile当您要访问它时。

最新更新