Django Rest 框架将字段组合在一起

Pun*_*ama 4 python django rest django-rest-framework

我有一个 Django 模型 Offer,其中包含名称 ... 和带宽值和带宽单位等字段。我使用 Django REST 框架类 ModelSerializer 来序列化我的模型。我有 :

{"id": 10,"max_devices":5,"bandwidth_value":"100.00","bandwidth_unit":"M"}
Run Code Online (Sandbox Code Playgroud)

我想要;

{"id": 10,"max_devices":5,"bandwidth":{"value":"100.00","unit":"M"}}
Run Code Online (Sandbox Code Playgroud)

我能怎么做 ?

bak*_*kal 5

您可以为您的Offer模型使用如下所示的自定义模型序列化程序:

class Offer(serializers.ModelSerializer):                                                                                      
    class Meta:                                                                                                                         
        model = Offer
        fields = ('id', 'max_devices', 'bandwidth')                                                                                                                  

    # We add a custom field called "bandwidth",
    # which is served by a method in the serializer classs,
    # that returns the format you want.

    bandwidth = serializers.SerializerMethodField('get_bandwidth')                                                              

    def get_bandwidth(self, obj):                                                                                                  
        return {'bandwidth': {'value': obj.bandwidth_value,
                             'unit': obj.bandwidth_unit}}
Run Code Online (Sandbox Code Playgroud)