0

我已经完成了一个概念验证 django 项目,现在想重新设计模型以使其更加健壮。

基本模型称为 a PhraseRequest

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

现在复杂之处在于一个PhraseRequest有一堆关联的模型,,PhraseRequestVotePhrase响应),PhraseRequestComment&c。

现在,当我列出按投票顺序排列的前十个 Phrase Request 时,我的模板有一个 for-each 循环,该循环提供十个 PhraseRequest 对象。然后它用请求填充 HTML,以及它的所有关联数据。

到目前为止,我一直在添加 eachPhraseRequest的字典来实现这一点:

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

您可以在模型中创建函数并在视图中对其进行排序。像这样

模型.py

class model_name(models.Model)

    ........

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