Django DRF:动态命名返回的对象

Django DRF: Name returned objects dynamically

我不确定 是否是我需要的,因为我不完全了解何时使用它。以下问题:

我的序列化器 returns a working/valid json,但形状不理想:

[
    {
        "store": {
            "last_update": "2021-06-01T12:06:00Z",
            "store_id": 238,
        }
    },
    {
        "store": {
            "last_update": null,
            "store_id": 1,
            }
        }
    }
]

我想要的位置:

[
    {
        "store_id": 238,
        "data": {
            "last_update": "2021-06-01T12:06:00Z",
        }
    },
    {
        "store_id": 1,
        "data": {
            "last_update": null,
        }
    }
]

简单模型:

class Store(models.Model):
    store_id = models.IntegerField("store id", null = True, blank = True)
    last_update = models.DateTimeField("last update")

序列化器:

class StoreSerializer(serializers.ModelSerializer):
    store = serializers.SerializerMethodField("get_info")

    def get_info(self, store):
        tmp = {}
        tmp["store_id"] = store.store_id
        tmp["last_update"] = store.last_update
        return tmp

    class Meta:
        model = Store
        fields = ["store"]

观看次数:

class StoreViewSet(viewsets.ViewSet):
    serializer_class = StoreSerializer
    http_method_names = ['get', 'head']

    def list(self, request):
        try:
            query = Store.objects.all()
            results = StoreSerializer(data = query, many = True)
            results.is_valid()
            return Response(data = results.data, status = status.HTTP_200_OK)
        except Exception as E:
            return Response(data = str(E), status = status.HTTP_400_BAD_REQUEST)

如何更改序列化器以获得所需的 JSON 形状?

以下序列化程序将提供所需的输出:

class StoreSerializer(serializers.ModelSerializer):
    data = serializers.SerializerMethodField()

    def get_data(self, store):
        return {
          "last_update": store.last_update
        }

    class Meta:
        model = Store
        fields = ["store_id","data"]