我有兩種模式:Vendor
,Product
。該Vendor
模型有一個state
字段。我想創建一個頁面,列出某個州的供應商,按產品分組。實施例的輸出是:最有效的方法來建立列表結合相關領域
Vendors in Maryland
- Product A
- Vendor 1
- Product B
- Vendor 2
- Vendor 3
- Product C
- Vendor 4
- Vendor 5
Vendors
具有Product
作爲ForeignKey
。我可以通過州名搜索供應商。
def vendor_by_state_page(request, state_name):
vendors = Vendor.objects.filter(state=state_name)
products = Products.objects.all()
我可以做嵌套循環的模板,但似乎效率不高:
{% for product in products %}
<h2>{{product.name}}</h2>
{% for vendor in vendors %}
{% if vendor.product == product %}
- {{vendor.display_name}}
{% endif %}
{% empty %}
No {{product.name}} vendors in {{state.name}}.
{% endfor %}
{% endfor %}
此外,空實際上並不在這裏工作,因爲有結果,他們只是在不匹配的,如果。理想情況下,我根本沒有產品出現在名單上。
所以,希望這是足夠的背景。我確定我錯過了一些東西。任何幫助都是極好的。謝謝!
tomas-walch - 謝謝!這工作,但'prefetch(state = state_name)'給我一個錯誤:''經理'對象沒有屬性'prefetch'' ..所以我刪除它,所有的工作很好。如果供應商列表爲空,是否還有額外的我可以過濾產品不在列表中的位置? – Brenden
只是我的一個錯字。我會編輯。 –
謝謝。有幫助!關於完全隱藏結果/模板中沒有供應商的產品的任何想法? – Brenden