Django用户身份验证

时间:2011-04-29 05:22:23

标签: django

我正在尝试为我的django项目设置用户身份验证,但我不断收到数据库错误UserProfile_User不存在。我在网上尝试了大部分的例子,但没有一个解决了这个问题。以下是我目前正在尝试的代码。任何相关的指针将不胜感激。我正在尝试的用户个人资料模型。

    from datetime import datetime
    from django.db import models
    from django.contrib.auth.models import User


    class UserProfile(models.Model):
        user = models.OneToOneField(User)    
        dob = models.DateField(default=datetime.today().year - 18)

        def __unicode__(self):
            return ('%s' % (self.user.username))

2 个答案:

答案 0 :(得分:1)

在这种情况下使用OneToOneField很好,但这并不意味着将为您创建配置文件。通过信号创建配置文件非常简单:

from django.contrib.auth.models import User
from django.db.models.signals import post_save

def user_post_save(sender, instance, created, **kwargs):
    # Creates user profile
    if created:
        profile, new = UserProfile.objects.get_or_create(user=instance)

post_save.connect(user_post_save, sender=User)

这将包含在models.py UserProfile定义正下方,并确保您的所有用户都有与之关联的个人资料。

答案 1 :(得分:0)

我从不使用OneToOneField,但我的猜测是,它需要双向存在(用户及其配置文件)。如果两者中的一个不存在,则会引发异常。也许你最好使用ForeignKey