sync from local backup
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import json
|
||||
import os
|
||||
from django.core.management.base import BaseCommand
|
||||
from learn.models import Course, Chapter, ChapterContent
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = '为Python基础课程填充教学内容'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
python_course = Course.objects.filter(title__icontains='Python').first()
|
||||
if not python_course:
|
||||
self.stdout.write(self.style.ERROR('未找到Python课程,请先运行 seed_courses'))
|
||||
return
|
||||
|
||||
# Load content from JSON file
|
||||
json_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'python_content.json')
|
||||
if not os.path.exists(json_path):
|
||||
self.stdout.write(self.style.ERROR(f'内容文件不存在: {json_path}'))
|
||||
return
|
||||
|
||||
with open(json_path, 'r', encoding='utf-8') as f:
|
||||
chapters_data = json.load(f)
|
||||
|
||||
created_count = 0
|
||||
for ch_data in chapters_data:
|
||||
chapter, created = Chapter.objects.update_or_create(
|
||||
course=python_course,
|
||||
sort_order=ch_data['sort_order'],
|
||||
defaults={
|
||||
'title': ch_data['title'],
|
||||
'duration': ch_data['duration'],
|
||||
'is_free': ch_data['is_free'],
|
||||
'video_url': ch_data['video_url'],
|
||||
}
|
||||
)
|
||||
|
||||
if created or not ChapterContent.objects.filter(chapter=chapter).exists():
|
||||
ChapterContent.objects.update_or_create(
|
||||
chapter=chapter,
|
||||
defaults={
|
||||
'content_md': ch_data['content_md'],
|
||||
'content_html': ch_data['content_md'],
|
||||
}
|
||||
)
|
||||
|
||||
if created:
|
||||
created_count += 1
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(f'成功为Python课程填充 {len(chapters_data)} 章内容'))
|
||||
Reference in New Issue
Block a user