День добрый. Встала нерешаемая мною ранее задача, однако, (думаю) весьма тривиальная. Просьба дать ориентировку правильно ли размышляю, совет или если это дико тривиально - рецепт (если вы обладаете таковым ). Ранее на форуме, я спрашивал на основе какой библиотеки лучше всего сгенерировать текстовый отчёт (.xlxs, .pdf) содержащие данные объектов моделей Django. С этим разобрались. Теперь необходимо получать текстовый документ по запросу с клиентской части, да еще и с определенными данными.
Для этого создана модель Report, с полем agreeid на основании которого текстовый отчёт и будет заполнятся:
class TheReport(models.Model):
report_type = models.TextField("описание")
agreeid = models.ForeignKey(Agreement, verbose_name= " договор Х", on_delete=models.CASCADE, blank=True, null=True)
'''
значение agreeid определяет объекты и значения полей попадающих в формируемый текстовый документ
'''
Отправляя значение agreeid с клиента хочу получать гененрируемый данной функцией текстовый документ:
def get_report(request):
rent_test = Data.objects.all
response = HttpResponse(
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
)
response['Content-Disposition'] = 'attachment; filename=FORM_1-IL.xlsx'.format()
workbook = Workbook()
worksheet = workbook.active
worksheet.title = 'ТЕКСТОВЫЙ ДОКУМЕНТ ' #название книги
# формируем длинные строки текстового документа
worksheet.merge_cells('A1:P1')
worksheet.merge_cells('A2:P2')
worksheet['A12'].value = 'Наименование '
worksheet['B11'].value = 'Фамилия'
#...
worksheet['C11'].value = 'Имя'
renter = Data.objects.get(pk=4)
company = renter.mainnam
worksheet['A13'].value = str(company)
nameinct = Data.objects.get(pk=4)
famil = nameinct.fnam
worksheet['C13'].value = famil
snameinct = Data.objects.get(pk=4)
sname = snameinct.secnam
worksheet['B13'].value = sname
worksheet['B16'].value = 'договор' # заголовок определяющей ячейки (=agreeid)
а
worksheet['B16'].value = 'договор' # значение agreeid ( определяющая ячейка)
for col_num, column_title in enumerate(columns, 1):
cell = worksheet.cell(row=row_num, column=col_num)
cell.value = column_title
workbook.save(response)
return response
Еще раз проблема и вопросы:
Нужно дополнить(get_report)/написать новую функцию , так что бы после получения значения agreeid с клиента генерировался соответствующий документ.
Вопрос :правильно ли я представляю как это должно быть реализовано или это "неуклюжий" и "не каноничный" вариант? Буду рад советам и рецептам, спасибо