【发布时间】:2017-01-21 03:17:15
【问题描述】:
即使按钮本身显示在屏幕上,我添加到 Django 管理员的“导出”按钮也不会连接到我的视图。我已经使用了几个关于 SO 的教程来使按钮可见 - 但单击时它什么也不做,重新加载同一页面。我有一种感觉,我设置它的结构是错误的,或者我没有正确地将数据库中的数据传递给它。
- 我假设这里有我遗漏的错误?
- 如何将我的导出函数中已有的数据传递给我 数据库?我想我必须做一个查询集,但我不确定我是否 实际获取数据或将其放置在正确的位置。这 按钮旨在让用户导出所有已经 已存储(例如,特定类型的所有记录)到 Excel 文件中。
我的应用 > css > categories.css(创建按钮)
.btn{
border: solid 1px #000;
background: #eee;
border-radius: 3px;
margin-top: 20px;
float: right;
text-align: right;
}
我对@987654322@ 模板所做的更改以使我的按钮可见(我将其放在管理员更改列表的搜索栏之后):
{% block search %}{% search_form cl %} <form action="#" method="get">
<input type="submit" class="btn" value="Export" name="export" align="right">{% endblock %}
views.py:
from django.template import RequestContext
def excel_view(request):
attorney_range = Attorney.objects.all().filter(active=True)
if request.GET.get('export'):
if 'export' in request.GET:
response = HttpResponse(content_type='application/vnd.ms-excel')
response[
'Content-Disposition'] = 'attachment; filename=Report.xlsx'
xlsx_data = WriteToExcel(attorney_range)
response.write(xlsx_data)
return response
else:
return render("change_list.html",
context_instance=RequestContext(request),
template_name='change_list.html')
我的导出到 Excel 函数所在的名为 excel_utils.py 的文件:
from io import StringIO
import xlsxwriter
from django.utils.translation import ugettext
from .models import Attorney
def WriteToExcel(attorney_range):
attorney_range = Attorney.objects.all().filter(active=True)
output = StringIO.StringIO()
workbook = xlsxwriter.Workbook(output)
worksheet_s = workbook.add_worksheet("Summary")
# excel styles here
attorney_range = Attorney.objects.all()
attorney_list = []
for x in attorney_range:
attorney_list.append(x)
for idx, data in enumerate(attorney_list):
row = 5 + idx
worksheet_s.write_boolean(row, 1, cell_center)
worksheet_s.write_string(row, 2, attorney_list.index(2))
【问题讨论】:
标签: django django-views export django-queryset