Реализован полный CRUD для тегов товаров
Упрощена модель ProductTag: - Удалены поля soft delete (is_deleted, deleted_at, deleted_by) - Добавлено поле is_active для управления статусом - Упрощены менеджеры и методы модели Создан CRUD функционал: - ProductTagForm: форма с автогенерацией slug - Views: список, создание, просмотр, редактирование, удаление - URL маршруты: /products/tags/* - Шаблоны: list, form, detail, confirm_delete Особенности: - Поиск по названию и slug - Фильтрация по статусу активности - Статистика использования тегов в товарах/комплектах - Пагинация (20 на страницу) - Предупреждение при удалении с отображением связанных объектов - Добавлена ссылка "Теги" в навигацию 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -360,29 +360,10 @@ class ProductCategoryAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
class ProductTagAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'slug', 'get_deleted_status')
|
||||
list_filter = (DeletedFilter,)
|
||||
list_display = ('name', 'slug', 'is_active')
|
||||
list_filter = ('is_active',)
|
||||
prepopulated_fields = {'slug': ('name',)}
|
||||
search_fields = ('name',)
|
||||
readonly_fields = ('deleted_at', 'deleted_by')
|
||||
actions = [restore_items, delete_selected, hard_delete_selected]
|
||||
|
||||
def get_queryset(self, request):
|
||||
"""Переопределяем queryset для доступа ко всем тегам (включая удаленные)"""
|
||||
qs = ProductTag.all_objects.all()
|
||||
ordering = self.get_ordering(request)
|
||||
if ordering:
|
||||
qs = qs.order_by(*ordering)
|
||||
return qs
|
||||
|
||||
def get_deleted_status(self, obj):
|
||||
"""Показывает статус удаления"""
|
||||
if obj.is_deleted:
|
||||
return format_html(
|
||||
'<span style="color: red; font-weight: bold;">🗑️ Удален</span>'
|
||||
)
|
||||
return format_html('<span style="color: green;">✓ Активен</span>')
|
||||
get_deleted_status.short_description = 'Статус'
|
||||
|
||||
|
||||
class ProductAdmin(admin.ModelAdmin):
|
||||
|
||||
Reference in New Issue
Block a user