I have three models — articles, authors and tweets. I'm ultimately needing to use Django REST Framework to construct a feed that aggregates all the objects using the Article and Tweet models into one reverse chronological feed.
Any idea how I'd do that? I get the feeling I need to create a new serializer, but I'm really not sure.
Thanks!
Edit: Here's what I've done thus far.
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
It looks pretty close to me. I haven't used ViewSets in DRF personally, but I think if you change your code to this you should get somewhere (sorry - not tested either of these):
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)
If you're not wedded to using a ViewSet then a generics.ListAPIView
would be a little simpler:
class TimeLineList(generics.ListAPIView): serializer_class = TimeLineSerializer def get_queryset(self): return list(itertools.chain(Tweet.objects.all(), Article.objects.all()))
Note you have to convert the output of chain
to a list for this to work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With