下载生成的文件 DRF
Download generated file DRF
我正在使用 django-filter 过滤数据。过滤后我想下载 xls 中的数据。请告诉我该怎么做
views.py
class ProductsReport(generics.ListAPIView):
permission_classes = GLOBAL_PERMISSIONS
serializer_class = serializers.ProductReportSerializer
queryset = models.SchichtNomenclature.objects.all()
filter_backends = DEFAULT_FILTERS
filter_class = ProductsReportFilter
ordering = ["-schicht__updated"]
你可以这样写一个viewset,
class UsersViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
permission_classes = GLOBAL_PERMISSIONS
serializer_class = UserSerializer
queryset = Users.objects.all()
filter_class = UsersFilter
ordering = ["-schicht__updated"]
@action(url_path='sample_csv_template', methods=['get'], detail=False)
def sample_csv_template(self, request, pk=None):
# data_frame = list()
# filtered_queryset = self.filter_queryset(self.queryset)
# for item in filtered_queryset:
# data_frame.append(dict(self.serializer_class(item)).data)
USERS_COLUMNS = ['First Name', 'Last Name', 'Email']
users_data_frame = [{'First Name': 'Aaron', 'Last Name': 'Spike', 'Email': 'aaraon@test.com'}]
data_frame = pandas.DataFrame(users_data_frame, columns=USERS_COLUMNS)
excel_file = IO()
writer = pandas.ExcelWriter(excel_file, engine='xlsxwriter')
data_frame.to_excel(writer, sheet_name="users_data", index=False)
writer.save()
writer.close()
excel_file.seek(0)
response = HttpResponse(excel_file.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=test.xlsx'
return response
我正在使用 django-filter 过滤数据。过滤后我想下载 xls 中的数据。请告诉我该怎么做
views.py
class ProductsReport(generics.ListAPIView):
permission_classes = GLOBAL_PERMISSIONS
serializer_class = serializers.ProductReportSerializer
queryset = models.SchichtNomenclature.objects.all()
filter_backends = DEFAULT_FILTERS
filter_class = ProductsReportFilter
ordering = ["-schicht__updated"]
你可以这样写一个viewset,
class UsersViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
permission_classes = GLOBAL_PERMISSIONS
serializer_class = UserSerializer
queryset = Users.objects.all()
filter_class = UsersFilter
ordering = ["-schicht__updated"]
@action(url_path='sample_csv_template', methods=['get'], detail=False)
def sample_csv_template(self, request, pk=None):
# data_frame = list()
# filtered_queryset = self.filter_queryset(self.queryset)
# for item in filtered_queryset:
# data_frame.append(dict(self.serializer_class(item)).data)
USERS_COLUMNS = ['First Name', 'Last Name', 'Email']
users_data_frame = [{'First Name': 'Aaron', 'Last Name': 'Spike', 'Email': 'aaraon@test.com'}]
data_frame = pandas.DataFrame(users_data_frame, columns=USERS_COLUMNS)
excel_file = IO()
writer = pandas.ExcelWriter(excel_file, engine='xlsxwriter')
data_frame.to_excel(writer, sheet_name="users_data", index=False)
writer.save()
writer.close()
excel_file.seek(0)
response = HttpResponse(excel_file.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=test.xlsx'
return response