没有显示中级Django 2.0管理员操作页面

时间:2018-06-16 16:38:24

标签: django django-admin

我已创建更新自定义管理操作,并希望在更新操作完成之前转到新页面来请求更新确认。

以下是各种文件的代码: 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是目录名称。

执行更新功能时,状态正在正确更新,但未显示中间更新页面。 请帮忙。

1 个答案:

答案 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))