从外部获取一个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()
posted @   二月雪  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示