我有一个电视频道模型,并创建了一个Django-restframework视图,它可以帮我轻松地提供列表和详细视图。在此基础上,我添加了两个自定义的单个对象视图,称为all_events和now_and_next_event,如在此处描述的。到目前为止,这一切都很好。
class ChannelViewSet(viewsets.ModelViewSet):
"""
A viewset for viewing and editing channel instances.
"""
serializer_class = serializers.ChannelSerializer
queryset = Channel.objects.all()
@link()
def now_and_next_event(self, request, pk):
''' Show current and next event of single channel. '''
...
现在我想添加一个自定义视图,它不是单个对象视图而是类似于列表的视图:
class CurrentEvents(generics.ListCreateAPIView):
''' Show current event of all channels. '''
model = Event
serializer_class = serializers.EventSerializer
def get(self, request):
...
当我禁用我的视图并添加手动的URL模式时,它也可以正常工作。但是我还没有弄清楚如何让它们都使用相同的“api/channel/”前缀,或者更喜欢的是,如何将自定义列表视图类添加到我的视图中。
这是我的视图URL模式:
^api/channel/$ [name='channel-list']
^api/channel/(?P<pk>[^/]+)/$ [name='channel-detail']
^api/channel/(?P<pk>[^/]+)/all_events/$ [name='channel-all-events']
^api/channel/(?P<pk>[^/]+)/now_and_next_event/$ [name='channel-now-and-next-event']
我希望能像这样访问我的列表视图:
^api/channel/current_events/$ [name='event-current']