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