1
那麼這個人是有點古怪來形容了,請多多包涵:)嘗試無碼解釋將沒有多大意義,所以這裏有一個簡單的例子:的Django「CONCAT」查詢設置
class Employee(models.Model):
name = models.CharField(max_length=100)
class Location(models.Model):
address = models.CharField(max_length=200)
employees = models.ForeignKey(Employee)
class Company(models.Model):
name = models.CharField(max_length=100)
locations = models.ForeignKey(Location)
讓我們假設我們希望通過模板打印特定公司中的每個員工。通常我們會只是這樣做:
{% for location in company.locations.all %}
{% for employee in location.employees.all %}
{{ employee.name }} <br/>
{% endfor %}
{% endfor %}
能夠統計出巨大的,但在這種情況下,我想在員工列表的頂部打印出一個頭,如果有任何員工,但是如果離開關閉標題沒有僱員在場。在典型的循環中,我使用forloop.first
來表示標題應該顯示,但在這種情況下我不能。如果我在外部循環(位置)中嘗試它,當沒有僱員時,如果我在內部循環(僱員)中嘗試它,我可能會得到一個標題,我只會得到帶有僱員的位置的標題,但是我會得到每個位置一個標題,而不是整個列表的一個標題。
現在,我的這個理想的解決辦法是跳過一步都在一起,並有一些辦法從公司層面遍歷所有員工:
{% for employee in company.employees %}...{% endfor %}
凡employees
在公司層面實質上是一個級聯爲每個位置設置的員工查詢。我研究過自定義管理器,但我不確定如何在這種情況下使用它們。
希望這是有道理的。感謝您的任何建議!
謝謝!在寫完這個問題後大約2分鐘,這實際上發生在我身上,我剛纔一直在向後看我想的問題!另外一個注意事項,在我的例子中,我實際上將它作爲一個函數添加到了我的Model類中,這可以讓我完全按照上面在模板(`company.employees`)中所述的方式調用它。 – Toji 2010-11-26 17:28:31