下午好我有以下查询,我正在使用 DRF 的库 Renderer-xlsx 生成一个 excel,我在传递相应的 url 时下载它,问题是我想对这个 excel 应用过滤器,所以我不下载数据库中的所有内容,但过滤器中显示的内容。
总结:我在前端有一个下载按钮(ANGULAR),我按下它,我指出过滤器,例如在 excel 中只有满足这个条件的记录(EquipoOriggen = C65CAN01)我将它作为请求传递并返回得到excel
如您所见,下载,但所有记录,我需要过滤器
我的序列化器
class InterfaceSerializer(serializers.ModelSerializer):
# Las siguientes lineas me permiten agregan campos de otros modelos al modelo en cuestion que estoty serializando a traves de llaves foraneas.
#Se le agrega la propiedad de read_only=True para que el campo no sea editable.
EquipoOrigen = serializers.CharField(source='id_EquipoOrigen.nombre',read_only=True)
PuertoOrigen = serializers.CharField(source='id_PuertoOrigen.nombre',read_only=True)
LocalidadOrigen=serializers.CharField(source='id_EquipoOrigen.localidad',read_only=True)
CategoriaOrigen=serializers.CharField(source='id_EquipoOrigen.categoria',read_only=True)
EquipoDestino = serializers.CharField(source='id_EquipoDestino.nombre',read_only=True)
PuertoDestino = serializers.CharField(source='id_PuertoDestino.nombre',read_only=True)
LocalidadDestino=serializers.CharField(source='id_EquipoDestino.localidad',read_only=True)
CategoriaDestino=serializers.CharField(source='id_EquipoDestino.categoria',read_only=True)
Vendedor=serializers.CharField(source='id_EquipoOrigen.vendedor',read_only=True)
class Meta:
model=Interfaces
fields=('id_interface','id_EquipoOrigen','EquipoOrigen','id_PuertoOrigen','PuertoOrigen','LocalidadOrigen','CategoriaOrigen','Vendedor','estatus','etiqueta_prtg','grupo','if_index','bw','bw_al','id_prtg','ospf','description','id_EquipoDestino','EquipoDestino','id_PuertoDestino','PuertoDestino','LocalidadDestino','CategoriaDestino','ultima_actualizacion',)
class PostPageNumberPagination(PageNumberPagination):
page_size=10
page_size_query_param = 'page_size'
max_page_size = 1000
#Funcion Para El Filtro del Modelo Interfaces.
class InterfacesFilter(filters.FilterSet):
EquipoOrigen=filters.CharFilter(field_name='id_EquipoOrigen__nombre',lookup_expr='contains')
LocalidadOrigen=filters.CharFilter(field_name='id_EquipoOrigen__localidad',lookup_expr='exact')
Vendedor=filters.CharFilter(field_name='id_EquipoOrigen__vendedor',lookup_expr='exact')
#Declarando el Meta
class Meta:
model=Interfaces
fields= ['EquipoOrigen','LocalidadOrigen','Vendedor']
class InterfacesViewSet(viewsets.ModelViewSet):
queryset=Interfaces.objects.all()
serializer_class=InterfaceSerializer
pagination_class=PostPageNumberPagination
filter_class=InterfacesFilter
我的excel课下载
class MyExampleViewSet(XLSXFileMixin, ReadOnlyModelViewSet):
queryset = Interfaces.objects.all()
serializer_class = InterfaceSerializer
renderer_classes = (XLSXRenderer,)
filter_class=InterfacesFilter
filename = 'my_export.xlsx'
更新
要知道如何解决我的问题并使用 DRF 生成 EXCEL,我建议通过以下 URL:
如何从 Django Rest Framwrek 中的 URL 捕获参数以在视图中处理它 [已解决] in-django-rest-framwrek-to-process-it-in-a
