with framework español python django django-models django-views django-rest-framework

python - español - django rest framework with django 2



Devuelve los resultados de varios modelos con Django REST Framework (1)

Se ve muy cerca de mí. No he usado ViewSets en DRF personalmente, pero creo que si cambias tu código a esto deberías llegar a algún lado (lo siento, no he probado ninguno de estos):

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)

Si no está comprometido con el uso de un ViewSet, entonces generics.ListAPIView sería un poco más simple:

class TimeLineList(generics.ListAPIView): serializer_class = TimeLineSerializer def get_queryset(self): return list(itertools.chain(Tweet.objects.all(), Article.objects.all()))

Tenga en cuenta que debe convertir la salida de la chain a una lista para que esto funcione.

Tengo tres modelos: artículos, autores y tweets. En última instancia, necesito usar Django REST Framework para construir un feed que agregue todos los objetos usando los modelos Article y Tweet en un feed cronológico inverso.

¿Alguna idea de cómo haría eso? Tengo la sensación de que necesito crear un nuevo serializador, pero realmente no estoy seguro.

¡Gracias!

Editar: Esto es lo que he hecho hasta ahora.

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