代码之家  ›  专栏  ›  技术社区  ›  Anshuman Mishra

有什么想法吗?我如何将django项目中所有django模型的模式导出为外部格式?

  •  0
  • Anshuman Mishra  · 技术社区  · 3 年前

    我从经理那里得到一个要求,他们需要一个通用的python脚本,将django项目中所有模型的模式导出到excel中。Generic,因为我们想对我们公司django上运行的多个微服务做同样的事情。excel中的每一行都应该包含有关该模型中字段的信息。每个模型都应该在新的图纸中表示。我似乎不知道什么是做这件事的好方法。

    我能想到的一种方法是使用递归在代码库中的所有文件中进行迭代,寻找models.py等文件名,并在其中进行迭代,以找到不同的类,提取字段类型、约束、最大长度/大小、是否可以为null等信息。但不确定这是否是一种好方法,因为在我认为的情况下,边缘情况处理会很困难。

    0 回复  |  直到 3 年前
        1
  •  0
  •   dgw    3 年前

    好吧,让django为您完成处理应用程序和模型的重任:

    from pathlib import Path
    
    from django.apps import apps
    from django.conf import settings
    
    
    project_root = Path(settings.BASE_DIR)
    
    # Loop through all apps
    for app_name, app_conf in sorted(apps.app_configs.items()):
    
        # Local app within project_root?
        try:
            Path(app_conf.path).relative_to(project_root)
        except ValueError:
            # Not a local app => skip
            continue
    
        # Loop through all models of app_name
        for model_name, model_cls in sorted(apps.all_models[app_name].items()):
            print(f'App: {app_name:<25s} Model: {model_name}')
    
            # Now work with the model ..
            #  .. create documentation
            #  .. export documentation
    

    这应该会给你的任务一个开始。