我有三种模型-文章,作者和推文。我最终需要使用Django REST Framework构造一个供稿,该供稿将使用Article和Tweet模型的所有对象聚合为一个反向时间顺序供稿。
知道我会怎么做吗?我感觉到我需要创建一个新的序列化器,但是我不确定。
谢谢!
编辑:这是我到目前为止所做的。
app / serializers.py:
class TimelineSerializer(serializers.Serializer):
pk = serializers.Field()
title = serializers.CharField()
author = serializers.RelatedField()
pub_date = serializers.DateTimeField()
app / views.py:
class TimelineViewSet(viewsets.ModelViewSet):
"""
API endpoint that lists all tweet/article objects in rev-chrono.
"""
queryset = itertools.chain(Tweet.objects.all(), Article.objects.all())
serializer_class = TimelineSerializer
它看起来离我很近。我还没有亲自在DRF中使用ViewSets,但是我认为,如果将代码更改为此,您应该会有所建树(对不起-这些都未经测试):
class TimelineViewSet(viewsets.ModelViewSet):
"""
API endpoint that lists all tweet/article objects in rev-chrono.
"""
def list(self, request):
queryset = list(itertools.chain(Tweet.objects.all(), Article.objects.all()))
serializer = TimelineSerializer(queryset, many=True)
return Response(serializer.data)
如果您不喜欢使用ViewSet,那么agenerics.ListAPIView
会更简单一些:
class TimeLineList(generics.ListAPIView):
serializer_class = TimeLineSerializer
def get_queryset(self):
return list(itertools.chain(Tweet.objects.all(), Article.objects.all()))
请注意,您必须将输出转换chain
为列表才能使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句