admin.py:
from django.contrib import admin
from django.http import HttpResponse
from database import models
from openpyxl import Workbook
class UserInfo(admin.ModelAdmin):
list_display = ('name','age','sex','sf','phone',) # 字段显示
list_filter = ['name','age','sex','sf','phone',] # 搜索字段
actions = ["export_as_excel"]
def export_as_excel(self, request, queryset):
meta = self.model._meta # 用于定义文件名, 格式为: app名.模型类名
field_names = [field.name for field in meta.fields] # 模型所有字段名
response = HttpResponse(content_type='application/msexcel') # 定义响应内容类型
response['Content-Disposition'] = f'attachment; filename={meta}.xlsx' # 定义响应数据格式
wb = Workbook() # 新建Workbook
ws = wb.active # 使用当前活动的Sheet表
ws.append(field_names) # 将模型字段名作为标题写入第一行
for obj in queryset: # 遍历选择的对象列表
for field in field_names:
data = [f'{getattr(obj, field)}' for field in field_names] # 将模型属性值的文本格式组成列表
ws.append(data)
wb.save(response)
return response
export_as_excel.short_description = '导出Excel' # 该动作在admin中的显示文字
admin.site.register(models.UserInfo, UserInfo)
admin.site.site_title="电影推荐系统管理系统"
admin.site.site_header="电影推荐系统管理系统"
admin.site.index_title="电影推荐系统管理系统"