Django Rest框架中的多个模型?

Cod*_*mon 14 python django django-rest-framework

我正在使用Django Rest框架.我想序列化多个模型并作为响应发送.目前我每个视图只能发送一个模型(如CartView下面只发送Cart对象).以下模型(无关)可以在那里.

class Ship_address(models.Model):
   ...

class Bill_address(models.Model):
   ...

class Cart(models.Model):
   ...

class Giftwrap(models.Model):
   ...
Run Code Online (Sandbox Code Playgroud)

我尝试使用DjangoRestMultiplemodels,它工作正常,但有一些限制.有没有内置的方式?我不能追加到以下视图中创建的序列化程序吗?

from rest_framework.views import APIView

class CartView(APIView):
    """
    Returns the Details of the cart
    """

    def get(self, request, format=None, **kwargs):
        cart = get_cart(request)
        serializer = CartSerializer(cart)
        # Can't I append anything to serializer class like below ??
        # serializer.append(anotherserialzed_object) ??
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢DRF.但是这个用例(发送多个对象)让我觉得如果编写一个普通的旧Django视图将更适合这样的要求.

bak*_*kal 24

你可以自定义它,它不会太奇怪,因为这是一个APIView(而不是ModelViewSet人类期望GET返回单个模型),例如你可以从你的GET中的不同模型中返回几个对象响应

def get(self, request, format=None, **kwargs):
    cart = get_cart(request)
    cart_serializer = CartSerializer(cart)
    another_serializer = AnotherSerializer(another_object)

    return Response({
        'cart': cart_serializer.data,
        'another': another_serializer.data,
        'yet_another_field': 'yet another value',
    })
Run Code Online (Sandbox Code Playgroud)

  • 如果您将如何使用分页来扩展您的答案,我将非常感激。 (7认同)