2010-10-06 90 views
0

這裏有雞和雞蛋的問題。首先,我有一個userprofile類,它建立在django的默認用戶模型之上。django:帶有反向外鍵的模型?

class UserProfile(models.Model): 
    def __unicode__(self): 
     return self.user.username 
    user = models.OneToOneField(User, unique=True) 
    exam = models.ForeignKey('questions.Exam', null=True) 

接下來,我有一個考試類

class Exam(models.Model): 
    def __unicode__(self): 
     return self.id 
    user = models.ForeignKey(UserProfile) 

的用戶配置和考試模型在不同的應用程序。但是,他們都有彼此的外鍵。我知道它的不好的設計,但在我的情況下,它是我特有的要求。然而,UserProfile考試的外鍵可能爲空。但是,無論何時我嘗試在管理員中創建考試,我都會收到錯誤,提示「UserProfile」是必填字段。當我嘗試創建用戶時,會發生相反的情況。有沒有辦法打破這種僵局?或者我應該重新設計我的應用程序?

回答

1

我應該重新設計我的應用程序嗎?

幾乎可以肯定。但是,這個實際問題是由於您有null=True,它正確設置數據庫以允許在外鍵字段上使用null,但您還沒有添加blank=True,這是Django用來驗證正確條目的事實。補充說,這部分至少應該工作。

+0

它工作。但我會改變我的設計,並使其更加精簡。謝謝。 – Neo 2010-10-06 21:50:53