我有一个电视频道模型并创建了一个 django-restframework viewlet,它为我提供了一个开箱即用的列表和详细视图。在顶部,我添加了两个名为 all_events 和 now_and_next_event 的自定义单对象视图,如下所述:Marking extra methods for routing。到目前为止效果很好。
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):
...
当我禁用我的 viewlet 并为其添加手动 url 模式时,它也可以正常工作。但是我还没有想出如何让它们都使用相同的 'api/channel/' 前缀,或者我想要更多,如何将自定义列表视图类添加到我的 viewlet 中。
这是我的 viewlet 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']