The basic DRF setup for my little Podcast Backend is working quite well:
router.register(r'episodes', views.EpisodeViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^api/', include(router.urls)),
]
in urls.py
and
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
in serializers.py as well as
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
work well for creating a full episode list (I chopped down the classes a bit, they do additionally contain some field filters but this is not related) and also for a hyperlinked Detail view for each episode.
Additionally to that I need the possibility to query episodes by other fields. Especially a "number" field and the "show_id"
I can't seem to get behind how this is done in DRF. I already tried adding def get_queryset() to the EpisodeDetailSerializer Class but that didn't work.
So what I'm looking for is to process something like
/api/episodes/?show_id=2&number=24
to deliver episode details instead of the default
/api/episodes/123
any help is appreciated.