django的get和filter方法是django model常用到的,搞清楚两者的区别非常重要。

为了说明它们两者的区别定义2个models

class Student(models.Model):
name = models.CharField('姓名', max_length=20, default='')
age = models.CharField('年龄', max_length=20, default='')

class Book(models.Model):
student = models.ForeignKey(Student)

一.先说下django的get方法:

1django的get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。
比如我数据库里有一条记录,记录的name的值是老王python的话,我用student = Student.objects.get(name='老王python'),
返回的是一个记录对象,你可以通过student.__dict__来查看,它返回的是一个字典的形式,{'key':valeus},key是字段的名称,而values是值的内容。
而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。
比如:student = Student.objects.get(name='老王'),你自己可以运行看下。

2如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。
比如我的student表里有一个记录:
id name age
1 python 24

book表:

id student_id
1 1
2 1

我用
student = Student.objects.get(name='python')
book = Book.objects.get(student)
它也会报错,因为book表有2条记录和student表相匹配。

二.再说下django filter:

1django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
比如我数据库里有一条记录,记录的name的值是老王python的话,我用student = Student.objects.filter(name='老王python')
它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。

2如果你用django的get去取得关联表的数据的话,无论关联表有多少记录的都不会报错。

另外我从别的资料里看到filter好像有缓存数据的功能,第一次查询数据库并生成缓存,下次再调用filter方法的话,直接取得缓存的数据,会get方法每次执行都是直接查询数据库的,不知道这个是不是正确。

这是我用了一段时间django的一点心得体会,希望对大家了解django get和filter有帮助!

作者:老王@python python 教程
老王python,提供pythn相关的python教程和python 下载,希望大家能够喜欢

转载于:https://www.cnblogs.com/wanpython/archive/2010/06/29/1767923.html

django get和filter方法的几点不同相关推荐

  1. python 多关键字匹配_使用django的objects.filter()方法匹配多个关键字的方法

    介绍: 今天在使用django的时候忽然想用到,如何匹配多个关键字的操作,我们知道django有一个objects.filter()方法,我们可以通过如下一句代码实现匹配数据库中title包含key关 ...

  2. django的get和filter方法的区别

    django的get和filter方法是django model常用到的,搞清楚两者的区别非常重要.为了说明它们两者的区别定义2个models: classStudent(models.Model): ...

  3. 关于Django ORM filter方法小结

    django filter是一个过滤器,相当于SQL的select * from where.  filter返回一个QuerySet对象,还可以在该对象上继续进行django orm 该有的操作.  ...

  4. python中objects_python之django的objects.get和objects.filter方法

    为了说明它们两者的区别定义2个models class Student(models.Model): name = models.CharField('姓名', max_length=20, defa ...

  5. Python之列表表达式及高阶函数lamda、zip、enumerate、map和filter方法

    一.列表表达式[List Comprehension] 顾名思义,这个表达式作用是以一个快捷的方法对列表进行操作或运算,返回新的列表.其使用方式为[表达式 for 变量 in 列表] 或者 [表达式 ...

  6. python编程django项目中ModuleNotFoundError: No module named ‘django.core.urlresolvers‘解决方法

    文章目录 遇到的问题 解决方法 参考 遇到的问题 在做<python编程-从入门到实践>书中的项目的时候,遇到No module named 'django.core.urlresolve ...

  7. Python的filter方法实现筛选功能

    filter方法可以实现筛选,第一个参数是一个函数,返回值是True或者False,第二个参数可以是str.tuple.list,将后面的参数依次传递给函数,依次判断结果,留下结果为 True的.比如 ...

  8. JS Array filter()方法

    JS Array filter()方法 js的数据对象有一个fileter()方法,运行传入一个方法,并对数组中的每个元素进行过滤. var arr = [1,2,3,4,5,6]; function ...

  9. ES6 必须要用的数组Filter() 方法,不要再自己循环遍历了!!!

    1,来一个最简单最常用的栗子: 获得年龄为9岁的孩子 1 let arr = [2 {3 name:'小明',4 sex:0,5 age:96 },7 { 8 name:'小红', 9 sex:1, ...

最新文章

  1. c语言pID程序怎么设计,51单片机PID的算法实现程序C语言
  2. android 上传html文件大小,浅谈关于Android WebView上传文件的解决方案
  3. MySQL编程技巧_MySQL编程中的6个重要的实用技巧
  4. SQLServer常用SQL语句
  5. 数据分析sql面试必会6题经典_经典SQL面试题及答案分析
  6. 2022-02-05大数据学习日志——Hadoop离线阶段——Hive SQL DDL
  7. python12306抢票_python实现12306抢票
  8. 关于解决 inittramfs unpacking failed:Decoding failed 报错
  9. 京东商品关联版式,如何设置手机和电脑都显示?
  10. android:很抱歉,XXX已停止运行
  11. 短视频直播平台第三方特效SDK完整接入教程
  12. qq引流有哪些模式? QQ引流的几种方法
  13. TiDB 6.0 新特性
  14. Vue.config.productionTip = false 是什麽意思?
  15. 远程连接桌面黑屏解决方法(Winlogon错误的解决办法)
  16. 进销存 SPU和SKU
  17. 计算机视觉技术与应用概论,8计算机视觉概论2010.pdf
  18. 1、亲密数,你亲密个锤子哦
  19. 匝间短路故障学习历程(一)--数据集的问题
  20. Ubuntu16.04(GTX1660ti)cuda10.0和cudnn7.6环境配置 (环境乃一生之敌!!!)

热门文章

  1. 康轩职教计算机应用基础课件,《Excel中IF函数的应用-机器人任务》计算机应用基础职教课件.ppt...
  2. python iterable对象_如何理解Python中的iterable对象
  3. 修改模板文件后,Build Project(ctrl+F9)可以快速运行
  4. 【BZOJ3529】数表,莫比乌斯反演+BIT
  5. 【BZOJ4568】幸运数字,树链剖分/倍增+维护线性基
  6. 【OJ8756】砝码称重V2,可达性多重背包
  7. 10.傅里叶变换——达利画家、基集(Basis Set)、傅里叶级数(Fourier Series)_1
  8. 3.过滤——比较过滤结果、2D中的移动平均线_2
  9. 2017.10.9 DZY Loves Math VI 失败总结
  10. Mosquito的优化——其他优化(九)