Мой API собирается перечислить кучу эпизодов подкаста. Сам список должен быть урезан и не иметь большого количества данных, чтобы быть достаточно маленьким, чтобы вытащить весь список сразу. Вот мой сериализатор DRF класса
class EpisodeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Episode
fields = ('url', 'id', 'title', 'subtitle', 'show_id', 'published_at', 'updated_at')
Это прекрасно работает, используя этот вид
class EpisodeViewSet(viewsets.ModelViewSet):
queryset = Episode.objects.all().order_by('-published_at')
serializer_class = EpisodeSerializer
HyperlinkedModelSerializer также связывает эпизоды с их подробными видами, но, очевидно, использует тот же вид по умолчанию. Теперь я хочу быть более детальным в подробном представлении, поэтому я сделал следующее:
router.register(r'episodes', views.EpisodeViewSet)
router.register(r'episode', views.EpisodeDetailViewSet)
добавил этот маршрут и сделал новый вид
class EpisodeDetailViewSet(viewsets.ModelViewSet):
queryset = Episode.objects.all().order_by('-published_at')
serializer_class = EpisodeDetailSerializer
и сериализатор, использующий дополнительные модели для более подробной информации
class EpisodeDetailSerializer(serializers.ModelSerializer):
chapters = ChapterMarkSerializer(source='chaptermark_set', many=True)
media = MediaClipSerializer(source='mediaclip_set', many=True)
show = ShowSerializer()
class Meta:
model = Episode
fields = ('url', 'id', 'title', 'subtitle', 'show', 'published_at', 'updated_at','description', 'show_notes', 'cover_image', 'updated_at', 'chapters', 'media')
depth = 1
Теперь это в основном работает для каждого Эпизода, теперь использующего формат /episode/123
, но также отображает все эпизоды с полными подробностями в URL-адресе /episode
и перезаписывает URL-адрес / episodes, который больше не отображается на индексной странице API. .
Я полагаю, это из-за записи model = Episode
, которая перезаписывает другой класс за то, что он отвечает за эту модель?
Я думаю, что мое новое представление каким-то образом должно быть ограничено, чтобы не перечислять все эпизоды, и тогда два представления / сериализатора должны как-то сосуществовать, но я чувствую, что застрял здесь, и документы действительно не помогают мне.
Спасибо за любой совет.