Для реализации вывода всех категорий и связанных с ними товаров в 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/
, вы должны увидеть список всех категорий и товаров, соответствующих каждой категории. Категории будут выводиться с их названиями, а под каждой категорией будут указаны соответствующие товары.