2011-07-03 30 views
1

我有一個Q &一個網站,它允許在存儲每個更改的修訂時更改答案,就像這裏在Stackoverflow上一樣。選擇一些答案時,我希望它包含最新(但不是全部)修訂版作爲每個答案的屬性,以便我可以避免在我的頁面上執行n + 1個查詢。我該如何急切地加載答案最新版本?

class Answer(models.Model): 
    user = models.ForeignKey(User) 
    problem = models.ForeignKey(Problem) 

class AnswerRevision(models.Model): 
    answer = models.ForeignKey(Answer, related_name='revisions') 
    text = models.TextField() 
    timestamp = models.DateTimeField() 


Answer.objects.filter(problem=p) 

回答

0

我建議以下結構:

class Answer(models.Model): 
    user = models.ForeignKey(User) 
    revision = models.ForeignKey(AnswerRevision) 
    problem = models.ForeignKey(Problem) 

class AnswerRevision(models.Model): 
    answer = models.ForeignKey(Answer, related_name='revisions') 
    text = models.TextField() 
    timestamp = models.DateTimeField() 

唯一的區別是,我添加了一個revision屬性答案。當進行新版本修改時,只需將FK更改爲指向新版本。

+0

我希望能夠完全規範化,但如果找不到更好的方法,我會這樣做。 – Jill