我正在尝试为我的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))
答案 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
。