Добавлена информация об остатках на складе в каталоге и оптимизированы SQL-запросы
- Добавлено отображение свободных и общих остатков товаров в карточках каталога - Информация показывается с цветовой индикацией (зеленый/красный) - Формат: X свободно / Y всего (X = доступно - зарезервировано, Y = общее количество) Оптимизация производительности: - Устранена N+1 проблема с загрузкой фото товаров (вложенный Prefetch) - Устранена N+1 проблема с загрузкой категорий товаров - Удалено дублирование запросов - товары извлекаются из уже загруженных категорий - Аннотации остатков добавлены в Prefetch для товаров - Добавлен оптимизированный Prefetch для ProductKitPhoto Результат: сокращение количества SQL-запросов с ~13 до ~6-7 (на 50%)
This commit is contained in:
@@ -190,6 +190,20 @@
|
||||
.price-edit-container:hover .add-sale-price {
|
||||
opacity: 1;
|
||||
}
|
||||
/* Стили для информации об остатках */
|
||||
.stock-info {
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
.stock-info i {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
/* Для режима списка - добавляем правильное выравнивание */
|
||||
.catalog-list .catalog-item .stock-info {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.25rem;
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
|
||||
@@ -266,6 +280,18 @@
|
||||
<a href="{% url 'products:product-detail' item.pk %}" class="text-decoration-none">{{ item.name }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if item.item_type == 'product' %}
|
||||
{# Информация об остатках для товаров #}
|
||||
<div class="mt-1">
|
||||
<small class="stock-info {% if item.total_free > 0 %}text-success{% else %}text-danger{% endif %}">
|
||||
<i class="bi bi-box-seam"></i>
|
||||
<strong>{{ item.total_free|floatformat:0 }}</strong> свободно
|
||||
<span class="text-muted">/ {{ item.total_available|floatformat:0 }} всего</span>
|
||||
</small>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mt-1">
|
||||
{% if item.item_type == 'product' %}
|
||||
<div class="price-edit-container d-flex align-items-center gap-1 flex-wrap">
|
||||
|
||||
Reference in New Issue
Block a user