我有一个模型管理员:
class Items(admin.ModelAdmin)
actions = ['action_create_task']
def action_create_task(self, request, queryset):
if request.POST.get('post'):
form = CreateTaskAction(request.POST)
if form.is_valid():
# doing something
self.message_user(request, "Success appended task!")
return redirect(request.get_full_path())
else:
form = CreateTaskAction()
return render(request, 'create_task.html', {
'title': 'Create task for selected items',
'itmes': queryset,
'form': form
})
我在我的模板create_task.html
上使用这个HTML代码
但是如果我选择了一些项目,接下来选择操作,然后提交Create Task Action
表单,我就没有收到任何帖子,只会重定向到对象列表,没有什么消息等等。换句话说,当我提交表单时,我重定向到了站点列表,而没有调用我的action函数。我做错什么了?在
您正在编写一个更复杂的管理操作,它需要中间页。您正在混合您的动作功能和动作视图(中间视图)。当您启动一个操作时,django提供的一个视图处理它并调用提供所选模型实例的操作函数(queryset),然后调用视图将用户重定向回原始更改列表页面。因此,您可以有效地将表单发布到django视图,该视图本应处理操作请求,这就是为什么您一直获得刷新重定向。在
您要做的是创建一个“创建任务”视图:
注意您可能希望避免硬编码的URL,请参见reverse resolution of URLS。另请参见actions that provides intermediate pages。在
相关问题 更多 >
编程相关推荐