django - 我可以添加一个方法来在模型上调用“get”或“filter”时始终调用吗?

时间:2012-06-21 15:20:04

标签: django

如果没有自己的模板方法,就无法在模板中调用模型的方法。因此,要显示评论的赞成票数量:

comment.rating_set.filter(vote=1).count()

每个评论在发送到模板之前,都会添加一个rating_set成员,如下所示:

comment.rating_set = comment.rating_set.filter(vote=1).count()

很简单,但是有几种方法可以检索注释(也就是说,根据情况,有几种用于获取注释的方法)。模板经常使用。

对于每种方法,可以改变它而不是:

return commentList

它读取

return addInVotes(commentList)

其中addInVotes只是一个循环遍历列表中每个注释的简单函数,然后运行上面的代码来添加rating_count值。

这里的问题是 - 不是在所有方法中添加这个,是否可以将代码“附加”到model.get和model.filter?我知道我可以扩展评论的模型以获得一个新定义的过滤器并获取,但还有其他方法吗?似乎dJango会隐藏在某个地方。

1 个答案:

答案 0 :(得分:1)

查看Manager对象。您可以使用在一个位置而不是在每个视图中执行常见过滤的其他方法来创建默认管理器的子类。