django-vue3-admin-backend/fix_file_paths.py
2025-10-22 22:43:03 +08:00

92 lines
2.8 KiB
Python

"""
修复数据库中文件路径的反斜杠问题
将所有 Windows 风格的反斜杠路径转换为正斜杠
"""
import os
import django
# 设置 Django 环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings')
django.setup()
from dvadmin.system.models import FileList
from crud_book.models import CrudBookModel
def fix_file_list_paths():
"""修复 FileList 表中的路径"""
print("开始修复 FileList 表中的路径...")
# 修复 url 字段
files_with_backslash = FileList.objects.filter(url__contains='\\')
count = 0
for file_obj in files_with_backslash:
old_url = str(file_obj.url)
new_url = old_url.replace('\\', '/')
file_obj.url = new_url
file_obj.save(update_fields=['url'])
count += 1
print(f" 修复: {old_url} -> {new_url}")
print(f"FileList.url: 共修复 {count} 条记录")
# 修复 file_url 字段
files_with_backslash = FileList.objects.filter(file_url__contains='\\')
count = 0
for file_obj in files_with_backslash:
old_url = file_obj.file_url
new_url = old_url.replace('\\', '/')
file_obj.file_url = new_url
file_obj.save(update_fields=['file_url'])
count += 1
print(f" 修复: {old_url} -> {new_url}")
print(f"FileList.file_url: 共修复 {count} 条记录")
def fix_book_paths():
"""修复图书表中的路径"""
print("\n开始修复图书表中的路径...")
# 修复 image 字段
books_with_backslash = CrudBookModel.objects.filter(image__contains='\\')
count = 0
for book in books_with_backslash:
old_path = book.image
new_path = old_path.replace('\\', '/')
book.image = new_path
book.save(update_fields=['image'])
count += 1
print(f" 修复封面: {book.title} - {old_path} -> {new_path}")
print(f"CrudBookModel.image: 共修复 {count} 条记录")
# 修复 file 字段
books_with_backslash = CrudBookModel.objects.filter(file__contains='\\')
count = 0
for book in books_with_backslash:
old_path = book.file
new_path = old_path.replace('\\', '/')
book.file = new_path
book.save(update_fields=['file'])
count += 1
print(f" 修复文件: {book.title} - {old_path} -> {new_path}")
print(f"CrudBookModel.file: 共修复 {count} 条记录")
if __name__ == '__main__':
print("=" * 60)
print("开始修复文件路径中的反斜杠问题")
print("=" * 60)
try:
fix_file_list_paths()
fix_book_paths()
print("\n" + "=" * 60)
print("✅ 所有路径修复完成!")
print("=" * 60)
except Exception as e:
print(f"\n❌ 修复过程中出现错误: {e}")
import traceback
traceback.print_exc()