【问题标题】:Get own applications in Django在 Django 中获取自己的应用程序
【发布时间】:2018-05-17 09:12:24
【问题描述】:

有没有办法获得属于 Django 项目本身的应用程序列表(忽略使用pip 安装的应用程序)。

换句话说:我可以从settings.INSTALLED_APPS中排除使用pip安装的应用吗?

【问题讨论】:

  • 它基本上是遍历django项目文件夹和列表。
  • @VinayP 并非 Django 项目文件夹中的所有模块都在 INSTALLED_APPS 中。
  • AppList 类中的django_admin_tools 可能是一个很好的实现

标签: python django


【解决方案1】:

您可以使用get_app_configs 循环浏览应用程序,然后检查path 属性以查看它们是否在您的项目目录中。

>>> from django.apps import apps
>>> for a in apps.get_app_configs():
...     if a.path.startswith("/path/to/project/"):
...         print("%s is in project directory" % a.name)
...     else:
...         print("%s is in %s" % (a.name, a.path))

【讨论】:

    【解决方案2】:

    你可以使用django.apps获取所有django应用,

    In [35]: import django.apps
    
    In [36]: models = django.apps.apps.get_models()
    
    In [37]: myapps = set([x.__module__.split('.')[0]  for x in models])
    

    myapps 将为您提供所有自己的 django 应用程序。

    您可以使用 myapps 获取所有模型,

    In [89]: for o in myapps:
        ...:     try:
        ...:         x = django.apps.apps.get_app_config(o)
        ...:         print x.models
        ...:     except LookupError:
        ...:         pass
    

    【讨论】:

    • 感谢您的回答,我有兴趣检索那些在我自己的应用程序中的模型。我如何做到这一点?
    • 对不起,原来的问题是别人发的,所以我不能接受,我只是偶然发现了你的答案,这与我想要的相似。我可以投票,我做到了
    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多