0

У меня есть модель MenuSection и модель Product. Модель продукта имеет MenuSection, установленную как ForeignKey. Все работает отлично, за исключением того, что мне трудно понять, как запросить модель продукта и указать список объектов, уникальных для ForeignKey, но напечатайте значение ForeignKey один раз в верхней части шаблона.Query Django Списки объектов ForeignKey

Пример того, как я хотел бы печать Продукты для шаблона:

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

Tag

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

Tag Template

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

Это гениально !! –

Смежные вопросы