Я создаю api для получения изображений из модели django на лист Excel. Я использую пакет openpyxl. Но с помощью операции GET почтальон получает только URL-адрес изображения.
models.py
задача класса (models.Model):
Id=models.IntegerField()
Name=models.CharField(max_length=50,null=False,blank=True)
Image1=models.FileField(blank=True, default="",
upload_to="media/images",null=True)
Image2=models.FileField(blank=True, default="",
upload_to="media/images",null=True)
Date=models.DateField(null=True,blank=True)
def __str__(self):
return str(self.Name)
view.py
класс TaskViewSet (viewsets.ViewSet):
def list(self,request):
try:
queryset=Task.objects.all()
response = HttpResponse(content_type='application/ms-excel')
response['Content-Disposition']='attachment; filename="users.xls"'
wb=openpyxl.Workbook()
ws=wb.active
row_num=0
columns=['Id','Name','Image1','Image2','Date']
for col_num in range(len(columns)):
c = ws.cell(row=row_num + 1, column=col_num + 1)
c.value = columns[col_num]
for obj in queryset:
row_num+=1
row = [
obj.Id,
obj.Name,
obj.Image1.url,
obj.Image2.url,
str(obj.Date),
]
for col_num in range(len(row)):
c = ws.cell(row=row_num + 1, column=col_num + 1)
print(c)
c.value = row[col_num]
print(c.value)
wb.save(response)
return response
except Exception as error:
traceback.print_exc()
return Response({"message": str(error), "success": False}, status=status.HTTP_200_OK)