feat(products): добавить интерфейс маркетинговых флагов

Добавлены поля is_new, is_popular, is_special в форму продукта.
Настроено отображение полей в виде переключателей (switch).
Добавлено отображение бейджей флагов в списке товаров
и на странице детализации продукта.
This commit is contained in:
2026-01-13 10:04:48 +03:00
parent ec9fd1c78b
commit 2aa3de7bfa
4 changed files with 68 additions and 1 deletions

View File

@@ -98,7 +98,8 @@ class ProductForm(SKUUniqueMixin, forms.ModelForm):
model = Product
fields = [
'name', 'sku', 'description', 'short_description', 'categories',
'tags', 'base_unit', 'price', 'sale_price', 'status'
'tags', 'base_unit', 'price', 'sale_price', 'status',
'is_new', 'is_popular', 'is_special'
]
labels = {
'name': 'Название',
@@ -149,6 +150,13 @@ class ProductForm(SKUUniqueMixin, forms.ModelForm):
self.fields['base_unit'].required = False
self.fields['base_unit'].help_text = 'Базовая единица для учета товара на складе. На основе этой единицы можно создать единицы продажи.'
# Маркетинговые флаги (switch-стиль)
for flag_field in ['is_new', 'is_popular', 'is_special']:
self.fields[flag_field].widget.attrs.update({
'class': 'form-check-input',
'role': 'switch'
})
def clean_name(self):
"""Валидация уникальности имени для активных товаров"""
name = self.cleaned_data.get('name')