直接从Django Admin网页运行自定义python脚本

时间:2017-06-27 20:00:11

标签: python django

我编写了一个python脚本,它从一个模型获取输入,查询它,并通过ForeignKey关系将查询中的各种结果附加到另一个模型。它在python shell中工作得很好,但我想知道是否有办法从管理网页运行它,这样每次提交第一个模型的新对象时,它都会运行脚本并自动为另一个更新数据库模型。我正在使用Django管理界面作为开发人员进行数据输入的一部分,因为我发现它是一个非常灵活的界面。该脚本专为此应用程序编写,因此它位于应用程序的文件夹中。

1 个答案:

答案 0 :(得分:0)

我很惊讶这还没有回答。

将现有脚本包装为management command,或将其导入管理命令。

完成后,您可以覆盖有问题的管理员视图l ike this.

from django.contrib.admin import AdminSite
from django.views.decorators.cache import never_cache

class MyAdminSite(AdminSite):
    @never_cache
    def index(self, request, extra_context=None):
        # do stuff

然后,您创建此类的实例,并使用此实例而不是admin.site来注册您的模型。

admin_site = MyAdminSite()

然后,后来:

from somewhere import admin_site

    class MyModelAdmin(ModelAdmin):  
    ...

    admin_site.register(MyModel, MyModelAdmin)

最后,在该覆盖视图中,您可以使用代码中的management.call_command call the management command。这使您可以从命令行和代码内部使用它 - 如果需要,您也可以从cron安排它。 :)