我正在尝试序列化模型以显示在现有的前端接口上。如此设置模型:
@ExtendWith(VertxExtension.class)
public class test {
...
}
class Timevalue(models.Model):
time = models.FloatField(blank=True, null=True)
values = JSONField(blank=True, null=True)
的本质是它没有定义的键,因此它使用JSON而不是结构化架构。最终结果是,我需要RestAPI输出一个已展平的timevalue对象列表,以便每个元素都包含values
键以及time
的所有键。
到目前为止,我已经编写了以下序列化程序,这些序列化程序可以返回values
格式的数据
[{'time': 0.01, 'values': {'value1': 1, 'value2': 2, 'value3': 3}}]
但是我无法获得必要格式的输出:class TimevalueSerializer(serializers.Serializer):
time = serializers.FloatField()
values = serializers.JSONField()
。
我尝试了以下序列化程序设置:
[{'time': 0.01, 'value1': 1, 'value2': 2, 'value3': 3}]
但是我无法计算出要传递给子序列化器的内容,以使其返回所有键值对。
由于此模型用于其他视图,因此我更喜欢使用序列化器而不是ModelSerializer。
希望答案并不难。
斯图
答案 0 :(得分:1)
为此,也许很难使用serializer
,而不是那样,您可以手动发送此响应。例如:
from rest_framework import status
from rest_framework.response import Response
class SomeApiView(ApiView):
resp_list = list()
for i in Timevalues.objects.all():
t = {'time': i.time}
t.update(i.values)
resp_list.append(t)
return Response(resp_list, status=status.HTTP_200_OK)