【发布时间】:2017-06-02 08:47:21
【问题描述】:
我想在 django-admin 中为管理员创建一个额外的操作。
我希望能够将数据导出为 CSV 格式。
我在admin.py中写了以下代码:
from django.contrib import admin
from .models import News, ResourceTopic, Resource, PracticeTopic, Practice, Contacts, Visualization
import csv
from django.utils.encoding import smart_str
from django.http import HttpResponse
admin.site.register(News)
admin.site.register(ResourceTopic)
admin.site.register(Resource)
admin.site.register(PracticeTopic)
admin.site.register(Practice)
admin.site.register(Visualization)
def export_csv(modeladmin, request, queryset):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
writer = csv.writer(response)
writer.writerow([
"First Name",
"Last Name",
"Organization",
"City",
"Country",
"Email",
])
for obj in queryset:
writer.writerow([
obj.firstName,
obj.lastName,
obj.organization,
obj.city,
obj.country,
obj.email,
])
return response
class contactsAdmin(admin.ModelAdmin):
actions = [export_csv]
admin.site.register(Contacts, contactsAdmin)
我遇到的问题:文件被下载为 download.html 并且 html 文件显示相同的 django 管理页面。
【问题讨论】:
-
试着把
content_type改成mime_type这样gist.github.com/mgerring/3645889
标签: django csv django-admin export-to-excel export-to-csv