如何向Django管理员添加自定义功能?

时间:2013-02-01 20:07:15

标签: django django-admin

如何在Django项目的admin.py中使用此代码? http://djangosnippets.org/snippets/2834/

我不知道如何将此功能添加到我的admin.ModelAdmin类

from django.core.exceptions import PermissionDenied
from django.http import HttpResponse
from pyExcelerator import *
from StringIO import StringIO


def export_as_xls(modeladmin, request, queryset):
    """
    Generic xls export admin action.
    """
    if not request.user.is_staff:
        raise PermissionDenied
    opts = modeladmin.model._meta

    wb = Workbook()
    ws0 = wb.add_sheet('0')
    col = 0
    field_names = []
    # write header row
    for field in opts.fields:
        ws0.write(0, col, field.name)
        field_names.append(field.name)
        col = col + 1

    row = 1
    # Write data rows
    for obj in queryset:
        col = 0
        for field in field_names:
            val = unicode(getattr(obj, field)).strip()
            ws0.write(row, col, val)
            col = col + 1
        row = row + 1   

    f = StringIO()
    wb.save(f)
    f.seek(0)
    response = HttpResponse(f.read(), mimetype='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename=%s.xls' % unicode(opts).replace('.', '_')
    return response

export_as_xls.short_description = "Export selected objects to XLS"

我尝试了不同的解决方案,但未能

2 个答案:

答案 0 :(得分:2)

我们可以说名为actions.py的代码段,然后在admin.py中执行:

from myproject.actions import export_as_xls

class MyAdmin(admin.ModelAdmin):
    actions = [export_as_xls]

在摘录中还提到了如何使用它。

答案 1 :(得分:0)

在网站上添加

from django.contrib import admin

admin.site.add_action(export_as_xls)