从模板进行查询

时间:2013-11-29 06:13:23

标签: python html django templates jinja2

我使用jinja2作为django app的模板引擎。我想在模板中进行查询。我试过这样做:

{% for f in fs %}
  {% Following.objects.filter(follows=f).count() %}
{% endfor %}

我在变量中传递'fs',同时渲染模板列表。

但是,它错了。由于我的模型的定义方式,我无法进行'query_set'调用。这是一个片段:

class Following(models.Model):
  user = models.ForeignKey(User)
  follows = models.ForeignKey(F)

class F(models.Model):
  name = models.CharField(max_length=50)

那么,有可能这样做吗?

2 个答案:

答案 0 :(得分:1)

如果您使用的是jinja2而不是普通的Django模板语言,那么您应该使用的是:您没有说明为什么没有。

但是,没有必要定义一个单独的方法。您可以使用自动反向关系访问器:

{{ f.following_set.count() }}

答案 1 :(得分:0)

您无法调用从django模板获取参数的方法。要解决此问题,您可以在F模型中定义方法以获得所需的计数。

例如:

class F(models.Model):
  name = models.CharField(max_length=50)
  def get_follow_count(self):
      Following.objects.filter(follows=self).count()

然后在模板中你可以做

{% for f in fs %}
  {{ f.get_follow_count }}
{% endfor %}