2017-02-22 107 views
0

我有一個MenuSection模型和Product模型。產品模型將MenuSection設置爲ForeignKey。一切工作正常,除了我很難弄清楚如何查詢產品模型並列出ForeignKey特有的對象列表,但在模板頂部打印一次ForeignKey值。查詢Django對象列表的外鍵

的我怎麼會喜歡的產品印刷模板實例:

Salads (FK) <= Only printed once 
    Cobb (product.name) 
    Ceasar (product.name) 
Pizza (FK) 
    Supreme (product.name) 
    Veggie (product.name) 
... 

標籤

@register.inclusion_tag('tags/_starters.html', takes_context=True) 
def products(context): 
    product = Product.objects.all() 
    return { 
     'product': product, 
     'request': context['request'], 
    } 

標籤模板

{% for p in product %} 
    <div class="menu-wrapper"> 
    <div class="menu-description"> 
    <h1>{{ p.section.name }}</h1> <======= This is the (FK) that I need to print once. 
     <div class="menu-list"> 
     <h5>{{ p.name }}</h5> 

     <p class="price"> 
      {% if p.price_b %} 
      {{ p.price_a }}/ 
      {{ p.price_b }} 
      {% else %} 
      {{ p.price_a }} 
      {% endif %} 
     </p> 

     <span class="menu-dot-line"></span> 
     </div> 
     <p class="menu-ingredients">{{ p.description }}</p> 
    </div> 
    </div> 
{% endfor %} 

型號

@register_snippet 
class Product(ClusterableModel): 
    section = models.ForeignKey(MenuSection, verbose_name='Menu Section') 
    name = models.CharField(max_length=255, verbose_name='Menu Item Name') 
... 

回答

1

而不是查詢您的標籤Product,迴歸

return { 
    'menu_sections': MenuSection.objects.all() 
} 

然後,在你的模板,

{% for menu_section in menu_sections %} 
    {{ menu_section.name }} 
    {% for product in menu_section.product_set.all %} 
     {{ product.name }} 
    {% endfor %} 
{% endfor %} 
+0

這是輝煌! –