from django.contrib import admin from django.db import models from .models import Customer class IsVipFilter(admin.SimpleListFilter): title = 'VIP статус' parameter_name = 'is_vip' def lookups(self, request, model_admin): return ( ('yes', 'VIP'), ('no', 'Не VIP'), ) def queryset(self, request, queryset): if self.value() == 'yes': return queryset.filter(loyalty_tier__in=['gold', 'platinum']) if self.value() == 'no': return queryset.exclude(loyalty_tier__in=['gold', 'platinum']) return queryset @admin.register(Customer) class CustomerAdmin(admin.ModelAdmin): """Административный интерфейс для управления клиентами цветочного магазина""" list_display = ( 'full_name', 'email', 'phone', 'loyalty_tier', 'total_spent', 'is_vip', 'created_at' ) list_filter = ( 'loyalty_tier', IsVipFilter, 'created_at' ) search_fields = ( 'name', 'email', 'phone' ) date_hierarchy = 'created_at' ordering = ('-created_at',) readonly_fields = ('created_at', 'updated_at', 'total_spent', 'is_vip') fieldsets = ( ('Основная информация', { 'fields': ('name', 'email', 'phone') }), ('Программа лояльности', { 'fields': ('loyalty_tier', 'total_spent', 'is_vip'), 'classes': ('collapse',) }), ('Даты', { 'fields': ('created_at', 'updated_at'), 'classes': ('collapse',) }), )