Django вывод всех категори. Название категории и товар, ниже название категории и соответствующий товар и т.д.?

Для реализации вывода всех категорий и связанных с ними товаров в Django, мы можем использовать модели и представления (views).

1. Моделирование данных:
Создайте модель для товара (например, Product) и модель для категории (например, Category). Установите связь между двумя моделями с помощью поля ManyToMany или ForeignKey. Например, поле category в модели товаров может быть ForeignKey для модели категории.

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Product(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

2. Представления (views):
Создайте представление, которое будет выводить список всех категорий и соответствующих товаров. В данном примере мы будем использовать функциональное представление.

from django.shortcuts import render
from .models import Category, Product

def category_list(request):
    categories = Category.objects.all()

    data = []
    for category in categories:
        products = Product.objects.filter(category=category)
        data.append({'category': category, 'products': products})

    return render(request, 'category_list.html', {'data': data})

3. Шаблон (template):
Создайте шаблон для вывода данных на странице.

<!-- category_list.html -->
{% for category_data in data %}
    <h1>{{ category_data.category.name }}</h1>
    <ul>
        {% for product in category_data.products %}
            <li>{{ product.name }}</li>
        {% endfor %}
    </ul>
{% endfor %}

4. URL маршрутизация:
Создайте URL-маршрутизацию для представления category_list.

from django.urls import path
from .views import category_list

urlpatterns = [
    path('categories/', category_list, name='category_list'),
]

Теперь, если вы перейдете по URL-адресу /categories/, вы должны увидеть список всех категорий и товаров, соответствующих каждой категории. Категории будут выводиться с их названиями, а под каждой категорией будут указаны соответствующие товары.