#django-rest-framework
Вопрос:
Контроллер:
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()),
Комментарии:
1. В DRF вы можете легко взять объект по pk. Но я не нашел той функциональности, которая мне нужна …
2. Не могли бы вы поделиться своей
TicketMessage
моделью?
Ответ №1:
В этом случае вы работаете с a ListAPIView
(так как вы возвращаете список объектов), и вы можете переопределить get_queryset
метод, чтобы указать, какие TicketMessage
объекты должны быть возвращены, поэтому:
class TicketMessageSerializerView(generics.ListAPIView):
queryset = TicketMessage.objects.all()
serializer_class = TicketMessageSerializer
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(
ticket_id=self.kwargs['ticket_id']
)
Комментарии:
1. Спасибо! Это сработало для меня. Я пробовал использовать ListAPIView, но с функцией get (facepalm)