2016-10-12 26 views
0

我試着對模板這樣訪問相關模型:獲得一個濾波結果的計數在模板上的Django

​​

的問題是,我想指望它有所有學生的幽會active = True屬性。

我希望能夠做這樣的事情:

course.course_set.all.0.section_set.all.0.student_assignation(active=True).count 

我怎樣才能做到這一點在Django的模板?

回答

1

Django模板是針對如此複雜的查詢而設計的。 有可以處理這個

其中的一些方法,創建自定義django template tag

二,創建一個類的方法,這將提供此信息。

class Course: 
    ... 
    def sutdent_assign_count(self): 
     #Your query goes here.. 
+0

創建一個自定義模板過濾器來添加'.filter(active = true)'也應該有效。 – Tim

+0

當然,但這會導致邏輯分離和更多錯誤代碼,除非這是重複模式 – karthikr

+0

另一種選擇是在自定義管理器上使用all_active()方法。但我認爲我們需要更多地瞭解他想要做的事情。 – RemcoGerlich

0

你必須在模板太多的邏輯。在其中一個模型類上創建一個實際返回所需數字的方法;我會提出一個,但是你現在做的太不清楚了(爲什麼選擇.all.0,其他結果不重要?爲什麼選擇course.course_set,這對自己來說是多對多的?)。你的模特喜歡什麼?

你會如何描述你在英文中顯示的內容?這可能會提示您應該創建什麼樣的方法。