我已创建更新自定义管理操作,并希望在更新操作完成之前转到新页面来请求更新确认。
以下是各种文件的代码: admin.py`
class ProfileHolderAdmin(admin.ModelAdmin):
list_display = [field.attname for field in ProfileHolder._meta.fields]
actions = ['update_verified']
def update_verified(self, request, querySet):
users_verified=querySet.update(verified='y')
views.update_confirmation(request)
self.message_user(request,"No. of users verified = %s" %str(users_verified))
update_verified.short_description = "Mark selected users as verified"
admin.site.register(ProfileHolder, ProfileHolderAdmin)`
views.py中的代码:
def update_confirmation(request):
return render(request,'Profile/confirm_update.html', context=None)
confirm_update.html中的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Confirm Update</title>
</head>
<body>
<form action="admin.py" method="post">
<p>
Are you sure you want to update the verification status of selected users?
</p>
<input type="hidden" name="action" value="update_status" />
<input type="submit" name="apply" value="Update status"/>
</form>
</body>
</html>
html文件的路径是: WEBSITE_NAME \资料\模板\资料\ confirm_update.html
配置文件是我的应用程序的名称,website_name是目录名称。
执行更新功能时,状态正在正确更新,但未显示中间更新页面。 请帮忙。
答案 0 :(得分:0)
您的管理操作当前返回None
,这意味着管理员将负责重定向回正常更改列表页面。
为了呈现页面,您需要返回从update_confirmation
获得的响应。当然,您首先要渲染页面,然后运行查询集更新。为此,您需要找到一种方法来区分两个调用(例如,通过添加POST参数confirmed
)。
def update_verified(self, request, querySet):
if request.POST.get('confirmed') is None:
return views.update_confirmation(request)
users_verified=querySet.update(verified='y')
self.message_user(request,"No. of users verified = %s" %str(users_verified))