from django.contrib import admin from django.utils.html import format_html from django.db import models from .models import Project class ProjectAdmin(admin.ModelAdmin): """项目管理""" list_display = ( 'name', 'user', 'source_lang', 'target_lang', 'status_display', 'progress_display', 'segment_count', 'completed_count', 'created_at' ) list_filter = ('status', 'source_lang', 'target_lang', 'created_at', 'updated_at') search_fields = ('name', 'user__username', 'user__email', 'description') ordering = ('-created_at',) date_hierarchy = 'created_at' fieldsets = ( ('基本信息', { 'fields': ('name', 'user', 'description') }), ('语言配置', { 'fields': ('source_lang', 'target_lang') }), ('文件信息', { 'fields': ('srt_file_path', 'video_file_path', 'concatenated_audio_url'), 'classes': ('collapse',) }), ('TTS配置', { 'fields': ('tts_model', 'voice_mappings', 'custom_vocabulary', 'max_speed'), 'classes': ('collapse',) }), ('统计信息', { 'fields': ('status', 'segment_count', 'completed_segment_count', 'progress_percentage', 'created_at', 'updated_at'), 'classes': ('collapse',) }), ) readonly_fields = ('segment_count', 'completed_segment_count', 'progress_percentage', 'created_at', 'updated_at') def status_display(self, obj): """彩色显示状态""" colors = { 'pending': '#ffc107', 'processing': '#17a2b8', 'completed': '#28a745', 'failed': '#dc3545' } color = colors.get(obj.status, '#6c757d') return format_html( '{}', color, obj.get_status_display() ) status_display.short_description = "状态" def progress_display(self, obj): """进度条显示""" progress = obj.progress_percentage or 0 color = '#28a745' if progress == 100 else '#17a2b8' if progress > 50 else '#ffc107' return format_html( '