from django.contrib import admin from django.utils.html import format_html from django.utils.safestring import mark_safe from .models import CreatorProfile # Register your models here. @admin.register(CreatorProfile) class CreatorProfileAdmin(admin.ModelAdmin): list_display = ( 'avatar_thumbnail', 'name', 'category', 'e_commerce_level', 'exposure_level', 'followers', 'gmv', 'items_sold', 'avg_video_views', 'pricing', 'collab_count', 'mcn', 'location', 'create_time' ) list_filter = ( 'category', 'e_commerce_level', 'exposure_level', 'mcn', 'location', 'e_commerce_platforms', 'create_time', 'update_time' ) search_fields = ( 'name', 'email', 'instagram', 'tiktok_link', 'location', 'mcn', 'latest_collab', 'live_schedule', 'pricing_package' ) readonly_fields = ('create_time', 'update_time', 'avatar_preview') def avatar_thumbnail(self, obj): """在列表中显示头像缩略图""" avatar_url = obj.get_avatar_url() if avatar_url: return format_html('', avatar_url) return "无头像" avatar_thumbnail.short_description = "头像" def avatar_preview(self, obj): """在详情页显示头像预览""" avatar_url = obj.get_avatar_url() if avatar_url: return format_html('', avatar_url) return "无头像" avatar_preview.short_description = "头像预览" fieldsets = ( ('基本信息', { 'fields': ('name', 'avatar', 'avatar_url', 'avatar_preview') }), ('联系方式', { 'fields': ('email', 'instagram', 'tiktok_link', 'location', 'live_schedule') }), ('分类等级', { 'fields': ('category', 'e_commerce_level', 'exposure_level') }), ('数据指标', { 'fields': ('followers', 'gmv', 'items_sold', 'avg_video_views') }), ('定价信息', { 'fields': ('pricing', 'pricing_package') }), ('合作信息', { 'fields': ('collab_count', 'latest_collab', 'mcn') }), ('电商平台', { 'fields': ('e_commerce_platforms',) }), ('分析数据', { 'fields': ('gmv_by_channel', 'gmv_by_category'), 'classes': ('collapse',) }), ('时间信息', { 'fields': ('create_time', 'update_time'), 'classes': ('collapse',) }), ) list_per_page = 20 ordering = ('-create_time',) # 添加批量操作 actions = ['export_selected_creators'] def export_selected_creators(self, request, queryset): """批量导出选中的达人信息""" # 这里可以添加导出逻辑 self.message_user(request, f"已选择 {queryset.count()} 个达人进行导出") export_selected_creators.short_description = "导出选中的达人信息"