我已经完成了概念验证django项目,现在想要重新设计模型以更加健壮。
基本模型称为PhraseRequest
:
class PhraseRequest(models.Model):
user = models.ForeignKey(User)
timestamp = models.DateTimeField()
phrase = models.TextField()
现在复杂化的原因在于,PhraseRequest
有一堆关联模型,PhraseRequestVote
,Phrase
(响应),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
直观地说,这似乎并不正确 - 必须有一种“正确”的方法来做到这一点。我需要重新设计模型吗?查询?
答案 0 :(得分:1)
您可以在模型中创建功能并在视图中对其进行排序。喜欢这个
models.py
class model_name(models.Model)
........
def votes(self):
return Vote_Name.objects.filter(phrase_id=self).count()