首页 > 解决方案 > 将 Django-Rest-Framework 序列化程序从平面更改为嵌套?

问题描述

根据这个嵌套和扁平的例子:

https://docs.python-guide.org/scenarios/serialization/

我希望从以下 JSON 输出中表示外键

{
        "cart": {
            "cartid": "C0001",
            "username": "myuser1"
        },
        "subtotal": 150.0,
        "start_day": "2019-03-20T00:00:00"
    },

表示为:

{
            "C0001": {
                "username": "myuser1"
            },
            "subtotal": 150.0,
            "start_day": "2019-03-20T00:00:00"
        },

有没有一种简单的方法可以在 django-rest-framework 中输出这个输出?

这是我的序列化程序:

class CartSerializer(serializers.ModelSerializer):
    username = serializers.CharField(source='shopper.username')    
    class Meta:
        model = Cart
        fields = ['shopper', 'cartid', 'username']


class CartProdSerializer(serializers.ModelSerializer):
    cart = CartSerializer(read_only=True, label=Cart.cartid)
    class Meta:
        model = cart_prod
        fields = ['cart', 'subtotal', 'start_day']

而我的观点:

class CartProdView(viewsets.ModelViewSet):
    queryset = cart_prod.objects.all()
    serializer_class = CartProdSerializer

标签: djangodjango-rest-framework

解决方案


推荐阅读