【发布时间】:2018-10-26 11:55:37
【问题描述】:
我的小 Podcast 后端的基本 DRF 设置运行良好:
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
感谢任何帮助。
【问题讨论】:
标签: django django-rest-framework