0

概念実証の django プロジェクトを終了し、モデルをより堅牢になるように再設計したいと考えています。

基本モデルは a と呼ばれますPhraseRequest

class PhraseRequest(models.Model):
    user = models.ForeignKey(User)
    timestamp = models.DateTimeField()
    phrase = models.TextField()

ここで、(応答) などPhraseRequestの一連の関連付けられたモデルがあるという複雑な問題が発生します。PhraseRequestVotePhrasePhraseRequestComment

ここで、上位 10 個のフレーズ リクエストを投票順にリストすると、テンプレートには 10 個の PhraseRequest オブジェクトが供給される for-each ループがあります。次に、HTML にリクエストとそれに関連するすべてのデータを入力します。

PhraseRequestこれまでのところ、これを達成するために each の辞書に追加してきました:

for r in phrase_requests:
    r.votes = PhraseRequestVote.objects.filter(request=r)
    r.n_votes = sum([v.weight for v in r.votes])
    r.comments = PhraseRequestComment.objects.filter(request=r)
    #and so on

直感的には、これは正しくないように思えます。これを行うには「正しい」方法があるはずです。モデルを再設計する必要がありますか? クエリ?

4

1 に答える 1

1

モデルで関数を作成し、ビューで並べ替えることができます。このような

models.py

class model_name(models.Model)

    ........

    def votes(self):
         return Vote_Name.objects.filter(phrase_id=self).count()
于 2013-02-10T07:51:22.983 に答える