首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何管理输出值是django中的一个字符串。

如何管理输出值是django中的一个字符串。
EN

Stack Overflow用户
提问于 2022-10-04 16:43:23
回答 1查看 89关注 0票数 0

在我的Django后端db中,结果存储在结果列中,结果本身如下所示:

代码语言:javascript
运行
复制
result = [
{"pod_name": "kafka-9", "resolution_ms": 60000,"value": 420.85}, 
{"pod_name": "kafka-3", "resolution_ms": 60000, "value": 418.0},
...
]

当我从过滤器做get_results时

代码语言:javascript
运行
复制
results = DjangoCeleryResultsTaskresult.objects.filter(task_id=taskname).values('result')
just_res = list(results)[0].values()

just_res是一个字典值,它将我原来的列表转换为一个巨大的字符串。

代码语言:javascript
运行
复制
dict_values(['[{"pod_name": "kafka-9", "resolution_ms": 60000, "value": 420.85}, {"pod_name": "kafka-3", "resolution_ms": 60000, "value": 418.0}]'])

但是,我希望我的just_res是一个嵌套字典列表,就像它存储在db中一样。

我试过:

代码语言:javascript
运行
复制
service_results = list(just_res)[0]

但这只会转换一个字符串,并将该字符串转换为一个列表,这是另一个噩梦,不能只使用list()方法。

你也能帮我弄清楚吗?

将string(just_res)的值转换为list?

  1. --将django结果从db?

中提取出来的方法

总之,不确定为什么django筛选对象值(),我只能以字符串的形式获得结果,而不是原始的数据类型。我是用错了还是其他方法?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-04 17:50:46

从外观上看,您有一个存储所需数据的models.JSONField()。以list of dictionaries的形式从API中获取这些数据是非常直接的。您提到了一个list of nested dictionaries,但是在result列中,您没有nested dictionary,这与在API响应中获取它有什么不同。

如果您正在使用rest_framework,那么您所需要的就是一个model serializer

代码语言:javascript
运行
复制
from rest_framework import serializers

class ResultSerializer(serializers.ModelSerializer):
    class Meta:
        model = DjangoCeleryResultsTaskresult #import this model
        fields = ["result"]

现在,在视图中,使用上面的序列化程序。没有必要使用valueslist等。序列化程序优雅地处理了所有的事情。

代码语言:javascript
运行
复制
return Response(
    ResultSerializer(DjangoCeleryResultsTaskresult.objects.filter(
           task_id=taskname), many=True).data
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73951080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档