2011-04-29 257 views
1

我正在嘗試爲我的django項目設置用戶身份驗證,但我不斷收到數據庫錯誤UserProfile_User不存在。我在網上嘗試了大部分的例子,但沒有一個能解決這個問題。以下是我目前正在嘗試的代碼。任何相關的指針將不勝感激。用戶個人資料模型,我目前正在嘗試。Django用戶身份驗證

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)) 

回答

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定義,將確保所有用戶都具有與它們相關聯的資料。

0

我從來沒有使用OneToOneField,但我的猜測是,它是需要雙方(用戶和它的配置文件)的雙向存在。如果其中一個不存在,則會引發異常。也許你更喜歡ForeignKey