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"]
我不确定
我的序列化器 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"]