Django 如何将model对象转json数据
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
#原始方法:把所有属性拿出来一个个的放进dict中,当然可以参考方法2,提取对象所有属性与值
#参考方法1: 简单版本
def convert_to_dicts(objs):
'''把对象列表转换为字典列表'''
obj_arr = []
for o in objs:
# 把Object对象转换成Dict
dict = {}
dict.update(o.__dict__)
dict.pop("_state", None)#去除掉多余的字段
obj_arr.append(dict)
return obj_arr
调用:convert_to_dicts(modelName.objects.filter(id=1)) #必须是数组,非数组需要改进
#参考方法2:增加了日期类型判断
def convert_obj_to_dicts(model_obj):
import inspect, types
object_array = []
for obj in model_obj:
# obj.last_update_time = obj.last_update_time.isoformat()
# obj.create_time = obj.create_time.isoformat()
# 获取到所有属性
field_names_list = obj._meta.get_all_field_names()
print field_names_list
for fieldName in field_names_list:
try:
fieldValue = getattr(obj, fieldName) # 获取属性值
print fieldName, "--", type(fieldValue), "--", hasattr(fieldValue, "__dict__")
if type(fieldValue) is datetime.date or type(fieldValue) is datetime.datetime:
# fieldValue = fieldValue.isoformat()
fieldValue = datetime.datetime.strftime(fieldValue, '%Y-%m-%d %H:%M:%S')
# 没想好外键与cache字段的解决办法
# if hasattr(fieldValue, "__dict__"):
# fieldValue = convert_obj_to_dicts(model_obj)
setattr(obj, fieldName, fieldValue)
# print fieldName, "\t", fieldValue
except Exception, ex:
print ex
pass
# 先把Object对象转换成Dict
dict = {}
dict.update(obj.__dict__)
dict.pop("_state", None) # 此处删除了model对象多余的字段
object_array.append(dict)
print object_array
return object_array
调用:convert_obj_to_dicts(modelName.objects.filter(id=1)) #必须是数组,非数组需要改进
#参考方法3
from django.core import serializers
print serializers.serialize("json", modelName.objects.filter(id=32)) #非数组 好像也不能调用
本人是python初学者,上述仅供参考,如果有更好的建议,请多多指教
在上述方法2中,判断是否对象是否class 尝试用了好多方法 仍然没有能自动清除掉model对象中多余的属性,包括自动检测外键到哪一层
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)