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对象