在我的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')
不确定,但是想尝试这样的事情并将json从field和fields2中取出来
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实现是默认的。任何解决方案??
答案 0 :(得分:2)
Serializer用于序列化django对象,现在你有了元组列表,所以django序列化器不会处理它。
如果您想将这2个列表连接在一起,您不仅必须从user_name
获得User_obj
,还必须user_key
(ID?)将其连接到第二个模型。如果user_key
实际上是ForeignKey
,您可以这样做:
user_project_list = projectrunlog_object.values_list('user_key__user_name','project_run_date','project_run_status')
如果没有,你必须自己在python中处理它。
创建dicts或元组列表后,你不必运行django serializer,普通的json序列化器就可以完成这项任务:
json.dumps(list(user_project_list))