2013-11-29 40 views
4

我正在使用jinja2作爲django應用程序的模板引擎。我想在模板中查詢。我嘗試這樣做:從模板進行查詢

{% 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) 

那麼,有沒有一種可能的方式來做到這一點?

回答

1

如果您使用Jinja2的,而不是普通的Django模板語言,你有什麼應該工作:你不說爲什麼沒有。

但是,不需要定義一個單獨的方法。您可以使用自動反向關係訪問器:

{{ f.following_set.count() }} 
+0

Thanx。這是我用的:{{f.following_set.count}} [計數後沒有括號]。對不起,我錯誤地寫了jinja2,其實我正在使用正常的Django模板語言。 – toothie

+1

對,Django模板不接受括號,但自動調用方法,但在Jinja中,您確實需要這些parens。 –

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 %}