Реализовано управление активностью тегов товаров и комплектов

## Что сделано:

### 1. Фильтрация тегов по активности
- ProductForm и ProductKitForm показывают только активные теги в селектах
- ProductListView, ProductKitListView передают только активные теги в контекст фильтров

### 2. Отображение тегов на страницах товаров/комплектов
- product_detail.html отображает только активные теги
- productkit_detail.html отображает только активные теги

### 3. Логика отображения в деталях тега
- Для активного тега: показываются только активные товары/комплекты
- Для неактивного тега: показываются ВСЕ товары/комплекты (для возможности ручной очистки)

### 4. API endpoint для переключения статуса
- Новый endpoint toggle_tag_status_api в api_views.py
- POST /products/api/tags/<id>/toggle/
- Переключает is_active и возвращает новый статус

### 5. AJAX toggle switch в таблице тегов
- Заменены бейджи на toggle switch в tag_list.html
- Переключатель в 1.3x больше (масштабирование через CSS)
- Мгновенное обновление без перезагрузки страницы
- Показывает сообщение об успехе/ошибке

### 6. Связь в БД остаётся неизменной
- При деактивации тег остаётся привязан к товарам в БД
- Просто скрывается в интерфейсе
- При реактивации вновь становится видимым

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-12 11:33:12 +03:00
parent a1f5733fde
commit 77064a274f
9 changed files with 252 additions and 20 deletions

View File

@@ -16,7 +16,7 @@ class ProductForm(forms.ModelForm):
)
tags = forms.ModelMultipleChoiceField(
queryset=ProductTag.objects.all(),
queryset=ProductTag.objects.filter(is_active=True),
widget=forms.CheckboxSelectMultiple,
required=False,
label="Теги"
@@ -82,7 +82,7 @@ class ProductKitForm(forms.ModelForm):
)
tags = forms.ModelMultipleChoiceField(
queryset=ProductTag.objects.all(),
queryset=ProductTag.objects.filter(is_active=True),
widget=forms.CheckboxSelectMultiple,
required=False,
label="Теги"