Базовая настройка DRF для моего маленького Backcast Backend работает довольно хорошо:
router.register(r'episodes', views.EpisodeViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^api/', include(router.urls)),
]
в urls.py
и
class EpisodeSerializer(serializers.ModelSerializer):
# show = ShowSerializer()
class Meta:
model = Episode
depth = 1
class EpisodeDetailSerializer(serializers.ModelSerializer):
chapters = ChapterMarkSerializer(source='chaptermark_set', many=True)
media = MediaClipSerializer(source='mediaclip_set', many=True)
show = ShowSerializer()
class Meta:
model = Episode
depth = 1
в serializers.py, а также
class EpisodeViewSet(viewsets.ModelViewSet):
queryset = Episode.objects.all().order_by('-published_at')
def get_serializer_class(self):
if self.action == 'retrieve':
return EpisodeDetailSerializer
return EpisodeSerializer
хорошо работает для создания полного списка эпизодов (я немного разбил классы, они дополнительно содержат некоторые фильтры полей, но это не связано), а также для подробного представления с гиперссылкой для каждого эпизода.
Кроме того, мне нужна возможность запрашивать эпизоды по другим полям. Особенно поле «число» и «show_id»
Кажется, я не могу понять, как это делается в DRF. Я уже пытался добавить def get_queryset () в класс EpisodeDetailSerializer, но это не сработало.
Так что я ищу, чтобы обработать что-то вроде
/api/episodes/?show_id=2&number=24
для доставки деталей эпизода вместо значения по умолчанию
/api/episodes/123
любая помощь приветствуется.