【问题标题】:Override existing django-admin command覆盖现有的 django-admin 命令
【发布时间】:2016-06-10 18:10:20
【问题描述】:

除了编写自定义 django-admin 命令which is pretty well documented,我还希望能够覆盖现有命令,例如manage.py loaddata (fixture),以便在将固定装置加载到我的数据库后添加一些进一步的处理.

我想我必须编写一个自定义命令,首先调用“loaddata”,然后进行自己的处理。有没有一种巧妙的方法可以做到这一点?

有没有更好的解决方案?

【问题讨论】:

标签: python django


【解决方案1】:

感谢 Moses 链接到其他 SO 答案,我最终设法编写了一个模板,以便对 loaddata 命令进行额外处理。这是一个可以解决问题的 sn-p:

"""
Additional treatment for the loaddata command.
Location example: project/app/management/commands/loaddata.py
"""
from django.core.management.base import BaseCommand, CommandError
from django.core.management.commands import loaddata


class Command(loaddata.Command):

    def handle(self, *args, **options):
        super(Command, self).handle(*args, **options)
        self.stdout.write("Here is a further treatment! :)")

不要忘记将您的应用程序放在 INSTALLED_APPS 配置中

【讨论】:

  • edit: 之前的代码因为超级调用而不能正常工作,提到了INSTALLED_APP的顺序
  • @Qsebas 它实际上是在 Python 3 上工作的。我的错。
猜你喜欢
  • 2017-05-26
  • 2017-10-14
  • 2019-08-15
  • 2021-06-10
  • 2015-03-16
  • 2019-07-02
  • 2014-08-15
  • 2020-05-03
  • 1970-01-01
相关资源
最近更新 更多