嗨,我有一个自定义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
当您要访问它时。