Django数据结果集序列化并展示实现过程


Posted in Python onApril 22, 2020

示例为一对多的表关系,学生为多,老师为一,设置外键字段可以为空,也就是说关联的老师被删除该学生依然存在,只是相应字段留空

class Teacher(models.Model):
  name = models.CharField(max_length=10,verbose_name='老师名称')
  password = models.CharField(max_length=10,verbose_name='密码')
  class Meta:
    verbose_name_plural = '教师表'
  def __str__(self):
    return self.name
class Student(models.Model):
  teacher = models.ForeignKey(to=Teacher,on_delete=models.SET_NULL,null=True,verbose_name='教师')
  name = models.CharField(max_length=10,verbose_name='学生名字')
  age = models.IntegerField(verbose_name='年龄')
  class Meta:
    verbose_name_plural = '学生表'
  def __str__(self):
    return self.name

 teacher = models.Teacher.objects.get(pk=id) # id=id的某位老师
students = teacher.student_set.all() # 以一表反向查询多表,查询这位老师的学生

此时,all()返回的是一个结果集。<QuerySet [<Student: 学生1>, <Student: 学生22>, <Student: 学生3>, <Student: 学生44>]>

这里要将这个结果传给前端ajax需要先将其转成json格式,但是这样的一个结果集又不能使用json.dumps的。

我的方法是先给它转成列表嵌套字典再进行序列化操作

def index(request):
  if request.method == "GET":
    teacher_name = request.session.get('name')
    teacher = models.Teacher.objects.get(name=teacher_name)
    students = teacher.student_set.all()
    print(students)
    list = []
    for i in students:
      json_dict = {}
      json_dict['name'] = i.name
      json_dict['age'] = i.age
      list.append(json_dict)
    return JsonResponse(list,safe=False)  # 这里safe默认为True,只接受参数为dict字典类型,非dict类型---“报错:In order to allow non-dict objects to be serialized set the safe parameter to False.” safe=False之后list列表, tuple元祖, set集合就都可以

前端ajax接收参数,并且循环变量当前传过去的列表

$('#submit2').click(function(){
      $.ajax({
        url:'/app1/index/',
        type:'GET',
        success:function(res){
          console.log(res)
          var str = ''
          for(var i = 0; i < res.length; i++){     # js中的for循环
            str += '<li>' + res[i]['name'] + '</li>'
            }
            $('#students').html(str)          
        }
      })      

    })

渲染效果如下图所示

Django数据结果集序列化并展示实现过程

 <button id="submit2">点击查看我的学生</button>
<p id="students"></p>

就是这个小小的按钮,竟然在背后做了这么多事情,使得我们要的信息成功的展示在了下面的标签里[/code]

所以任何一份职业都不容易,没有小角色,都是大人物

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入浅析python中的多进程、多线程、协程
Jun 22 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
python使用udp实现聊天器功能
Dec 10 Python
python和c语言的主要区别总结
Jul 07 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python StringIO如何在内存中读写str
Jan 07 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
python中使用input()函数获取用户输入值方式
May 03 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
用Python提取PDF表格的方法
Apr 11 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 #Python
TensorFlow使用Graph的基本操作的实现
Apr 22 #Python
如何在django中运行scrapy框架
Apr 22 #Python
TensorFlow实现批量归一化操作的示例
Apr 22 #Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 #Python
python实现四人制扑克牌游戏
Apr 22 #Python
如何在django中实现分页功能
Apr 22 #Python
You might like
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
JS实现判断碰撞的方法
2015/02/11 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python的Django框架使用入门指引
2015/04/15 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
详解python中的文件与目录操作
2017/07/11 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
浅析python实现动态规划背包问题
2020/12/31 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
出差报告怎么写
2014/11/06 职场文书
护士求职简历自我评价
2015/03/10 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书