从外部获取一个django项目的所有model名称
不用启动运行django项目直接获取django项目的所有mode名称
1、cd
到django项目的根目录下
2、终端输入python命令获取django的所有model名称
# 获取django的所有model的指令
python manage.py shell -c "from django.apps import apps; _list=list(); [_list.extend([f'{model.__name__}' for model in app.get_models()]) for app in apps.get_app_configs()]; print(_list)"
3、python脚本代码:
import os
import re
import subprocess
django_path = r"D:\project\django_project" # django_project为项目名称,该路径为django项目根目录
os.chdir(django_path)
get_models_cmd = """python manage.py shell -c "from django.apps import apps; _list=list(); [_list.extend([f'{model.__name__}' for model in app.get_models()]) for app in apps.get_app_configs()]; print(_list)" """
result = subprocess.run(get_models_cmd, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, text=True)
out_content = result.stdout
print(out_content)
print(type(out_content))
pattern = r"'(.*?)'|\"(.*?)\""
# 使用 re.findall 提取所有匹配的内容
matches = re.findall(pattern, out_content)
# 提取每个匹配元组中的非空字符串
model_list = [match[0] if match[0] else match[1] for match in matches]
print(model_list)
print(type(model_list))
题外话:正则匹配获取一个类的名称
# 正则匹配获取一个类的名称
match =re.search(r'class\s+(\w+)\s*\(',obj_dt.django_models)
if match:
table_model_name = match.group(1).strip()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署