Django rest按字段过滤数据



控制器:

class TicketMessageSerializerView(generics.RetrieveAPIView):
queryset = TicketMessage.objects.all()
serializer_class = TicketMessageSerializer

如何通过ticket_id字段过滤消息列表,其值取自url:

path('api/tickets/<int:ticket_id>/messages/',
views.TicketMessageSerializerView.as_view()),

在这种情况下,您使用ListAPIView(因为您返回了对象的列表),并且您可以重写get_queryset方法来指定应该返回的TicketMessage,因此:

class TicketMessageSerializerView(generics.ListAPIView):
queryset = TicketMessage.objects.all()
serializer_class = TicketMessageSerializer
defget_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(
ticket_id=self.kwargs['ticket_id']
)

最新更新