Django自定义管理员操作自动更新/刷新管理页面

时间:2011-08-18 16:34:01

标签: django django-admin auto-update

我有一个管理操作,可以从我的数据库中打开一个pdf对象,并更新与该行关联的某些字段。如果执行操作,我将如何让管理页面自动显示对这些字段的更改,就像预先安装的删除管理操作一样?我已经尝试使用HttpResponseRedirect作为解决方法,但是无法将其与我的响应对象一起工作 - 只有一个或其他工作。是否有一种简单的方法可以让页面自动刷新?提前感谢任何指导!

from django.contrib import admin
from django.contrib.auth.models import User
from djangostuff.pdf.models import ABC
from django.http import HttpResponse, HttpResponseRedirect
import datetime, time

class ABCAdmin(admin.ModelAdmin):

    actions = ['print_selected_pdf']

    def get_user(self):
        return '%s'%(self.user.username)

    def create_pdf(self, request, queryset):
        response = HttpResponse(mimetype="application/pdf")
        response['Content-Disposition'] = 'attachment; filename=form.pdf'
        for obj in queryset:
            response.write(obj.form)
            rows_updated = ABC.objects.filter(pk=obj.pk).update(user=request.user,pdf_printed="1",request_time=time.strftime("%H:%M:%S"),request_date=datetime.datetime.today())
            if rows_updated == 1:
                message_bit = "1 form was"
            else:
                message_bit = "%s forms were" % rows_updated
            self.message_user(request, "%s successfully printed." % message_bit)
            return response
            #HttpResponseRedirect("/admin/pdf/abc")


    def print_selected_pdf(self, request, queryset):
        # prints the pdfs for those that are selected,
        # regardless if the pdf_printed field is true or false
        qs = queryset.filter(pdf_printed__exact=0)
        return self.create_pdf(request, qs)

    print_selected_pdf.short_description = "Print Selected PDF"
    get_user.short_description='Printed By'
    list_display=('form_no',get_user,'request_date','request_time','pdf_printed')


admin.site.register(ABC, ABCAdmin)

1 个答案:

答案 0 :(得分:1)

要解决此问题,您可以创建一个中间页面以重定向以进行确认,然后将用户重定向回原始更改列表页面并显示您的消息。用于删除对象的内置管理操作已经完成此操作。

您可以在此处详细了解:

https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#actions-that-provide-intermediate-pages