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的绘图工具matplotlib使用实例
Jul 03 Python
python optparse模块使用实例
Apr 09 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
Python实现的单向循环链表功能示例
Nov 10 Python
Python操作Redis之设置key的过期时间实例代码
Jan 25 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
Django restframework 源码分析之认证详解
Feb 22 Python
关于sys.stdout和print的区别详解
Dec 05 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
Python实现转换图片背景颜色代码
Apr 30 Python
Python Django获取URL中的数据详解
Nov 01 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
vue生命周期实例小结
2018/08/15 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python and or用法详解
2019/06/26 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
对python中return与yield的区别详解
2020/03/12 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
大学生自我鉴定
2013/12/08 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
开业庆典答谢词
2014/01/18 职场文书
八一建军节感言
2014/02/28 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
总经理检讨书范文
2015/02/16 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
MySQL表字段时间设置默认值
2021/05/13 MySQL
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
Vue router配置与使用分析讲解
2022/12/24 Vue.js