gpt4 book ai didi

python - 如何在django中序列化多种类型的对象以进行json转换?

转载 作者:行者123 更新时间:2023-12-01 04:26:08 28 4
gpt4 key购买 nike

在我的 Django 应用程序中,我需要从两个不同的表(models.py 类)获取字段,假设用户名来自一个表,其他信息来自其他表。由于我使用values_list来检索这些字段,因此该字段将位于列表中。但问题是我需要连接这两个列表并使用序列化器机制,以便进一步我可以从中准备一个 json 。Django 的默认序列化器不支持此功能。 django Serilizer 是否还有其他替代方案支持列表中不同类型的对象?示例代码:

models.py 中的projectrunlog 表中的字段

user_project_list = projectrunlog_object.values_list('user_key','project_run_date','project_run_status') 

models.py 中用户信息表中的字段

user_name = User_obj.values_list('user_name')

不确定,但想尝试这样的事情并从 field 和 fields2 中创建一个 json

fields = serializers.serialize('json', list(projectrunlog_object), fields = ('user_key','project_run_date','project_run_status'))
fields2 = serializers.serialize('json', list(User_obj), fields = ('user_name'))

因此,在我的 json 中,我想要 user_name 以及其他四个字段,并且应该无缝工作,而不知道 user_name 来自不同的表。请建议该怎么做。

按照 GwynBleidD 的建议,我不能这样做:json.dumps(list(user_project_list))因为这里的user key实际上是一个UUID字段。它显示错误“UUId 不可 JSON 序列化”。我使用的是 Django 1.8,其中 UUID 实现是默认的。有什么解决办法吗??

最佳答案

序列化器用于序列化 django 对象,现在您有元组列表,因此 django 序列化器无法处理该问题。

如果您想将这两个列表连接在一起,您不仅必须从 User_obj 中获取 user_name,还必须获取 user_key(id? )用于将其与第二个模型连接。如果 user_key 实际上是 ForeignKey,您可以这样做:

user_project_list = projectrunlog_object.values_list('user_key__user_name','project_run_date','project_run_status')

如果没有,则必须在Python中自行处理。

创建字典或元组列表后,您不必运行 django 序列化程序,普通的 json 序列化程序将完成这项工作:

json.dumps(list(user_project_list))

关于python - 如何在django中序列化多种类型的对象以进行json转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com