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 = "导出选中的达人信息"