2011-07-03 9 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

関連する問題