|
|
|
|
@ -1,13 +1,32 @@
|
|
|
|
|
# 导入Django命令基类,用于创建自定义管理命令
|
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
|
|
|
|
|
|
# 导入博客应用中的标签和分类模型
|
|
|
|
|
from blog.models import Tag, Category
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO 参数化
|
|
|
|
|
# TODO: 后续可优化为支持参数化(如指定输出格式、过滤条件等)
|
|
|
|
|
class Command(BaseCommand):
|
|
|
|
|
"""
|
|
|
|
|
Django自定义管理命令:生成搜索关键词列表
|
|
|
|
|
提取所有标签和分类的名称,用于构建搜索提示词或关键词库
|
|
|
|
|
"""
|
|
|
|
|
# 命令的帮助信息(执行python manage.py help build_search_words时显示)
|
|
|
|
|
help = 'build search words'
|
|
|
|
|
|
|
|
|
|
def handle(self, *args, **options):
|
|
|
|
|
datas = set([t.name for t in Tag.objects.all()] +
|
|
|
|
|
[t.name for t in Category.objects.all()])
|
|
|
|
|
print('\n'.join(datas))
|
|
|
|
|
"""
|
|
|
|
|
命令核心执行逻辑
|
|
|
|
|
当运行python manage.py build_search_words时调用
|
|
|
|
|
"""
|
|
|
|
|
# 1. 提取所有标签(Tag)的名称并转换为列表
|
|
|
|
|
# 2. 提取所有分类(Category)的名称并转换为列表
|
|
|
|
|
# 3. 合并两个列表并通过set去重(确保关键词唯一)
|
|
|
|
|
datas = set(
|
|
|
|
|
[tag.name for tag in Tag.objects.all()] + # 标签名称列表
|
|
|
|
|
[category.name for category in Category.objects.all()] # 分类名称列表
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 将去重后的关键词按行打印输出
|
|
|
|
|
# 格式为每个关键词单独一行,便于后续处理(如写入文件或导入搜索提示库)
|
|
|
|
|
print('\n'.join(datas))
|