从temp进行查询

2024-06-28 20:07:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

在呈现包含列表的模板时,我在变量中传递fs。你知道吗

但是,这是错误的。由于模型的定义方式,我无法执行“query\u set”调用。下面是一个片段:

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

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

那么,有没有可能的办法呢?你知道吗


Tags: djangoin引擎模板应用程序jinja2formodel
2条回答

不能调用从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 %}

如果您使用的是jinja2,而不是普通的Django模板语言,那么您所拥有的应该是有效的:您不必说为什么它不起作用

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

{{ f.following_set.count() }}

相关问题 更多 >