From 8f9bca5dfae6ff742a170417e687cc28663f0d0a Mon Sep 17 00:00:00 2001 From: yuangyaa Date: Mon, 27 Oct 2025 05:02:56 +0800 Subject: [PATCH] fix view --- crawler/admin.py | 25 +++++++++--- crawler/static/admin/css/custom_admin.css | 46 +++++++++++++++++++++++ 2 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 crawler/static/admin/css/custom_admin.css diff --git a/crawler/admin.py b/crawler/admin.py index a0c47a6..261d8ff 100644 --- a/crawler/admin.py +++ b/crawler/admin.py @@ -58,16 +58,31 @@ class CrawlTaskAdmin(admin.ModelAdmin): @admin.register(CrawledContent) class CrawledContentAdmin(admin.ModelAdmin): - list_display = ['title_short', 'website', 'task', 'keywords_matched', 'media_count', 'publish_date', 'is_local_saved', 'created_at'] + list_display = ['title_display', 'website', 'task', 'keywords_matched', 'media_count', 'publish_date', 'is_local_saved', 'created_at'] list_filter = ['website', 'task', 'created_at', 'publish_date', 'is_local_saved'] search_fields = ['title', 'content', 'keywords_matched'] readonly_fields = ['created_at', 'preview_content', 'media_files_display'] ordering = ['-created_at'] - def title_short(self, obj): - """显示缩短的标题""" - return obj.title[:50] + '...' if len(obj.title) > 50 else obj.title - title_short.short_description = '标题' + class Media: + css = { + 'all': ('admin/css/custom_admin.css',) + } + + def title_display(self, obj): + """显示完整的标题,但在列表中限制宽度""" + if len(obj.title) > 100: + return format_html( + '
{}
', + obj.title, + obj.title[:100] + '...' + ) + return format_html( + '
{}
', + obj.title + ) + title_display.short_description = '标题' + title_display.admin_order_field = 'title' def media_count(self, obj): """显示媒体文件数量""" diff --git a/crawler/static/admin/css/custom_admin.css b/crawler/static/admin/css/custom_admin.css new file mode 100644 index 0000000..5d4269a --- /dev/null +++ b/crawler/static/admin/css/custom_admin.css @@ -0,0 +1,46 @@ +/* +自定义管理后台样式 +*/ + +/* 增加标题列的宽度 */ +.field-title_display { + width: 350px !important; + max-width: 350px !important; + min-width: 350px !important; +} + +/* 确保表格可以水平滚动 */ +.results { + overflow-x: auto; +} + +/* 为标题单元格设置最小宽度 */ +.results table tbody td.field-title_display, +.results table thead th.field-title_display { + min-width: 350px !important; + width: 350px !important; + max-width: 350px !important; + white-space: normal !important; + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* 为表头设置固定位置 */ +.results table thead { + position: sticky; + top: 0; +} + +/* 强制表格列宽度 */ +.results table { + table-layout: fixed !important; + width: 100% !important; +} + +/* 特殊处理标题列 */ +.change-list .results table tbody td:nth-child(1), +.change-list .results table thead th:nth-child(1) { + width: 350px !important; + min-width: 350px !important; + max-width: 350px !important; +} \ No newline at end of file