Скрыты временные комплекты из каталога и поиска
Views: - ProductKitListView: фильтр is_temporary=False - CombinedProductListView: фильтр is_temporary=False для комплектов - API search: фильтр is_temporary=False в поиске и популярных Admin: - Добавлен фильтр по is_temporary - Добавлено отображение статуса временного комплекта в списке - Добавлена ссылка на заказ для временных комплектов - Добавлен раздел "Временный комплект" в fieldsets Теперь временные комплекты не показываются в общем каталоге, но доступны в админке и по прямой ссылке (для заказов). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -508,11 +508,11 @@ class ProductAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
class ProductKitAdmin(admin.ModelAdmin):
|
||||
list_display = ('photo_with_quality', 'name', 'slug', 'get_categories_display', 'get_price_display', 'is_active', 'get_deleted_status')
|
||||
list_filter = (DeletedFilter, 'is_active', QualityLevelFilter, 'categories', 'tags')
|
||||
list_display = ('photo_with_quality', 'name', 'slug', 'get_categories_display', 'get_price_display', 'is_temporary', 'get_order_link', 'is_active', 'get_deleted_status')
|
||||
list_filter = (DeletedFilter, 'is_active', 'is_temporary', QualityLevelFilter, 'categories', 'tags')
|
||||
prepopulated_fields = {'slug': ('name',)}
|
||||
filter_horizontal = ('categories', 'tags')
|
||||
readonly_fields = ('photo_preview_large', 'base_price', 'deleted_at', 'deleted_by')
|
||||
readonly_fields = ('photo_preview_large', 'base_price', 'deleted_at', 'deleted_by', 'order')
|
||||
actions = [
|
||||
restore_items,
|
||||
delete_selected,
|
||||
@@ -530,6 +530,10 @@ class ProductKitAdmin(admin.ModelAdmin):
|
||||
'fields': ('base_price', 'price', 'sale_price', 'price_adjustment_type', 'price_adjustment_value'),
|
||||
'description': 'base_price - сумма цен компонентов (вычисляется автоматически). price - итоговая цена с учетом корректировок. sale_price - цена со скидкой (опционально).'
|
||||
}),
|
||||
('Временный комплект', {
|
||||
'fields': ('is_temporary', 'order'),
|
||||
'description': 'Временные комплекты создаются для конкретных заказов и не показываются в каталоге.'
|
||||
}),
|
||||
('Дополнительно', {
|
||||
'fields': ('tags', 'is_active')
|
||||
}),
|
||||
@@ -552,6 +556,15 @@ class ProductKitAdmin(admin.ModelAdmin):
|
||||
return "-"
|
||||
get_price_display.short_description = "Цена"
|
||||
|
||||
def get_order_link(self, obj):
|
||||
"""Отображение ссылки на заказ для временных комплектов"""
|
||||
if obj.order:
|
||||
from django.urls import reverse
|
||||
url = reverse('admin:orders_order_change', args=[obj.order.pk])
|
||||
return format_html('<a href="{}">{}</a>', url, obj.order.order_number)
|
||||
return '-'
|
||||
get_order_link.short_description = "Заказ"
|
||||
|
||||
def get_queryset(self, request):
|
||||
"""Переопределяем queryset для доступа ко всем комплектам (включая удаленные)"""
|
||||
qs = ProductKit.all_objects.all()
|
||||
|
||||
Reference in New Issue
Block a user