繁体   English   中英

如何在Django中序列化多种类型的对象以进行JSON转换?

[英]how to serialize multiple types of objects in django for json conversion purpose?

在我的Django应用中,我需要从两个不同的表(models.py类)中获取字段,让我们说一个表中的用户名和其他表中的其他信息。 因为我使用values_list检索它们,所以该字段将在from的列表中。 但是,我需要串联这两个列表并使用序列化程序机制,以便进一步从中准备一个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)),因为在这里,用户密钥实际上是一个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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM