Желаемый результат - экспортировать таблицу всех пользователей в базе данных, а не экспортировать их сразу - разбить пользователей на 3 группы и экспортировать каждую из этих групп в качестве распространение листа.Возвратите несколько объектов HttpResponse, которые являются электронными таблицами Excel
Я использую xlsxwriter и StringIO
До сих пор код возвращается только первый объект HttpResponse из 3 (аки первой порции пользователей). Я попытался использовать StreamingHttpResponse, но считаю, что я неправильно использовал его/это не подходит для этой задачи.
Вопрос: Можно ли вернуть несколько таблиц за один ответ? Если нет, было бы лучше всего называть эту функцию несколько раз, раз для каждой группы пользователей? (после первого комментария)
Большое спасибо!
код ниже:
def export_users(request):
# all users
users = User.objects.all()
# breaks up all users into 3 groups
user_groups = [users[x:x+2] for x in xrange(0, len(users), 2)]
# FUNCTIONALITY NOTES --> idea is to split number of users for exporting into groups of 3 then export each group. right now it stops after the first group
# list var for storing all responses
full_response = []
for group in user_groups:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=UserReport.xlsx'
# user group
print "group! ---> %s"%(group)
# creates data variable to write to response
xlsx_data = WriteToExcel(group)
response.write(xlsx_data)
# appending each response to an array
full_response.append(response)
print len(full_response)
# all response objects
print full_response
# returning one here
return response
# non-functioning attempt to return all responses
# for response in full_response:
# print response
# return response
Вы можете вернуть ровно один отклик на ваш взгляд. Если вам нужно несколько ответов, вам также необходимо сделать несколько запросов из браузера. – knbk
Вы не можете этого сделать. В процессе работы вы можете сохранить файл в своей статической папке и вернуть путь к всем файлам. При получении ответа клиент может открыть (или загрузить) все файлы –
@MoinuddinQuadri - Звучит многообещающе! Не знакомы с сохранением файлов в статической папке: не могли бы вы, возможно, ответить на вопрос? – Dan