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