django:具有多个外键查询的模型

时间:2013-02-10 07:38:33

标签: django django-models

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

基本模型称为PhraseRequest

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

现在复杂化的原因在于,PhraseRequest有一堆关联模型,PhraseRequestVotePhrase(响应),PhraseRequestComment& c。

现在,当我按照投票顺序列出前十个短语请求时,我的模板有一个for-each循环,它输入了十个PhraseRequest对象。然后,它会根据请求填充HTML,以及所有相关数据。

到目前为止,我一直在添加每个PhraseRequest字典来实现这一目标:

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

直观地说,这似乎并不正确 - 必须有一种“正确”的方法来做到这一点。我需要重新设计模型吗?查询?

1 个答案:

答案 0 :(得分:1)

您可以在模型中创建功能并在视图中对其进行排序。喜欢这个

models.py

class model_name(models.Model)

    ........

    def votes(self):
         return Vote_Name.objects.filter(phrase_id=self).count()