覆盖现有的Django-admin命令

16

除了编写自定义django-admin命令(文档已经很详细了),我想能否覆盖现有的命令,比如manage.py loaddata (fixture),以便在装入数据后添加一些进一步的处理。

我猜我得编写一个自定义命令,首先调用'loaddata',然后进行自己的处理。有没有更好的解决方案呢?

是否有更好的解决方案?


3
请查看 这篇这篇 的内容。 - Moses Koledoye
1个回答

22

感谢Moses提供的链接,我最终成功编写了一个模板,用于对loaddata命令进行附加处理。以下是实现该功能的代码片段:

"""
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配置中将您的应用程序放在顶部


2
之前的代码由于super调用和INSTALLED_APP顺序问题而无法正常工作。 - Qsebas
@Qsebas 实际上它在 Python 3 上运行良好。是我自己的问题。 - Geoffrey R.
1
更新:使用Django 4.0,我能够覆盖位于INSTALLED_APPS底部的应用程序的loaddata。 - Nils

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接