四、Django queryset对象序列化的几种方式

1. 利用遍历queryset集合,构造dict,然后用json.dumps()序列化成json对象

"# views.py" 

task_nc = Task.objects.filter(...)  #获取未完成任务项
paginator_nc = Paginator(task_nc, 5)  #分页的容器,不作为本章关键
task_nc_p = paginator_nc.page(cur_page_nc) #获得当前页里面的未完成任务项,不作为本章关键

    for task_nc in task_nc_p: 
> 定义字典,将Page对象中的值存储在字典里(注意:这里paginator将queryset对象转换成了page对象了)
        json_dict = {}   
> 多对多关系   循环取出每一项任务应的协同人,构造co_list[]列表,append()存储每项任务的协同人
        co_list=[]
        json_dict["person_res"] = task_nc.person_res.name
        for t in task_nc.co_person.all():  
            co_list.append(t.name)
        json_dict["co_person"] = co_list

        json_dict["cpl_state"] = task_nc.cpl_state
> 返回以可读字符串表示的当地时间
        json_dict["deadlines"] = task_nc.deadlines.strftime('%Y-%m-%d')
        json_dict["sort"] = task_nc.sort.sort #sort为task里的外键,为一对多关系

        json_list_nc.append(json_dict)
> 将字典转化为json格式,投递到AJAX
        json_data_nc = json.dumps(json_list_nc) 

2. 利用django的model_to_dict将queryset序列化成字典

"# views.py"

> 获取注册的用户名 goods 为queryset对象
users = Myapp.objects.all()
json_dict = {}
    a = []  # 创建列表,存储字典---构成列表字典
    users = False
    for user in users:
        json_dict = model_to_dict(user) # 将query对象转化成字典
        a.append(json_dict) # 将字典存储在列表,也就是将不同用户的信息放在列表里

3. 利用Django的serialize序列化成json对象

"# views.py"

  import json
  from django.core.serializers import serialize

  json_data = serialize('json', users)  # str
  json_data = json.loads(json_data)  # 序列化成json对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。