跳转到主要内容

允许多个应用覆盖Django中相同的同管理命令

项目描述

© 2014-2017 Thomas Khyn

MCMO代表“管理命令多重覆盖”。这个Django应用允许多个应用覆盖相同的管理命令,而不会清除任何。

支持Django 1.8到1.11以及相应的Python 2和3版本。

安装

使用pip,尽可能简单

pip install django-mcmo

使用方法

在您的manage.py文件中,将下面的行替换为

from django.core import management

from mcmo import management

现在,您可以使用同时为django.core management命令定义覆盖的应用程序。两个命令都将被调用。

例如,如果您正在使用djingadjango-extra_keywords,这两个都覆盖了Django的makemessages管理命令,那么这两个应用程序中的命令都将依次调用。

将被调用的第一个命令是相对位置在INSTALLED_APPS中最新位置的应用程序中的命令。

替代使用方法

在您的manage.py中自动生成(例如,如果您使用buildout配合djangorecipebookdjangorecipe),只需确保在调用django.management.execute_from_command_line之前执行以下语句:

import mcmo

导入该包将修补django.core.management模块,其功能随后将启用多覆盖支持。

限制

同名覆盖应该都来自同一个命令类,或者至少来自Django的基命令类之一(AppCommandLabelCommand)。

django-mcmo在子类不一致的情况下将引发警告(但执行将继续)。例如,如果app1中的命令cmdAppCommand继承,而app2中的命令cmdLabelCommand继承。实际上,在这种情况下可能只会执行一个命令,因此获得的结果可能不一致,这取决于INSTALLED_APPS中应用的位置,或者引发有关参数存在、不存在或类型的异常。

在实践中,同名命令只有在两个第三方应用覆盖Django核心管理命令时才会遇到。因此,它们将来自同一个Command基类,在99.9%的情况下不会引起问题。

django-mcmo还可能在两个不同应用中具有不同命令类的同一命令中显式添加相同的选项时发出警告。

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源分发

django-mcmo-3.0.tar.gz (5.8 kB 查看散列)

上传时间

由以下机构支持