Невозможно получить изображения на листе Excel с помощью пакета OPENPYXL Django - PullRequest
0 голосов
/ 11 июля 2020

Я создаю 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)
...