【问题标题】:Running a custom python script directly from the Django Admin webpage直接从 Django Admin 网页运行自定义 python 脚本
【发布时间】:2017-12-01 00:21:46
【问题描述】:

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

【问题讨论】:

  • 它是一个 Django 命令(即你通过 manage.py 运行的东西)还是一个独立的脚本?
  • 它是使用Django命令制作的,它可以通过manage.py轻松运行,这就是我测试它是否与数据库一起使用的方式。

标签: python django


【解决方案1】:

我很惊讶这还没有回答。

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

完成此操作后,您可以覆盖相关的管理员视图 like 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_commandcall the management command。这使您可以从命令行和代码内部使用它 - 如果需要,您也可以从 cron 安排它。 :)

【讨论】:

    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多