2024-06-11 01:44:47 发布
网友
指,executing management commands from code
它们是从django管理接口调用这个命令执行代码的方法吗?在
我有一个自定义命令来定期更新scheduled as cron的数据库。老太婆工作得很好。我需要从管理界面手动更新数据库。在
更新:只需从python代码中的任何位置调用函数call_command('compilemessages'),就可以运行任何管理命令。在
call_command('compilemessages')
示例:
from django.core.management import call_command call_command('compilemessages')
如果任务绑定到当前在管理中查看的对象,一个不错的方法是在单击按钮时实现一个由ajax脚本调用的额外视图。额外的视图可以选择包装成芹菜任务,例如
模型.py
管理员py
class FooAdmin(admin.ModelAdmin): list_display = ['other_field', 'my_task_init'] class Media: js = ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js', '/static/js/admin_tasks.js', ) def get_urls(self): urls = super(FooAdmin, self).get_urls() extra_urls = patterns('', (r'^my-task/$', self.admin_site.admin_view(self.parse_view)) ) return extra_urls + urls # optionally decorated by celery def task_view(self, request): if not request.is_ajax(): raise Http404 task_id = request.GET.get('task_id') # your logic return HttpResponse('Success')
管理员_任务.js
$(document).ready(function (){ $('.task').click(function(){ var image = $(this).find('img'), loading = $(this).parent().find('.loading'), task_id = $(this).data('identifier').replace('task_', ''); $.ajax({ type: "GET", data: ({'task_id': task_id}), url: "/admin/app/model/my-task/", beforeSend: function() { image.hide(); loading.show(); }, statusCode: { 200: function() { loading.hide(); image.attr('src', '/static/img/success.png'); image.show(); }, 404: function() { loading.hide(); image.attr('src', '/static/img/error.png'); image.show(); }, 500: function() { loading.hide(); image.attr('src', '/static/img/error.png'); image.show(); } } }); }); });
如果您试图启动一个未绑定的任务,您可以覆盖一个模板元素或添加一些html。在
更新:只需从python代码中的任何位置调用函数
call_command('compilemessages')
,就可以运行任何管理命令。在示例:
如果任务绑定到当前在管理中查看的对象,一个不错的方法是在单击按钮时实现一个由ajax脚本调用的额外视图。额外的视图可以选择包装成芹菜任务,例如
模型.py
^{pr2}$管理员py
管理员_任务.js
如果您试图启动一个未绑定的任务,您可以覆盖一个模板元素或添加一些html。在
相关问题 更多 >
编程相关推荐