django orm中 get 与filter的区别

django orm中 get 与filter的区别:

以前误以为get与filter的区别仅仅是filter返回多条,而get仅支持一条记录,直到使用related_name属性 才发现,两者的差异远不止如此,最本质的区别是

filter返回的值是一个queryset对象,

get 返回值是一个定义的model对象,

使用get 返回的结果去访问子表对象可以成功,而使用filter就会出错,

是因为queryset 对象没有realtaed_name属性,无法回溯到子表

时间: 2024-10-20 09:54:24

django orm中 get 与filter的区别的相关文章

[Django]Django的orm中get和filter的不同

Django的orm中get和filter的不同 Django的orm框架对于业务复杂度不是很高的应用来说还是不错的,写起来很方面,用起来也简单.对于新手来说查询操作中最长用的两个方法get和filter有时候一不注意就会犯下一些小错误.那么今天就来小节下这两个方法使用上的不同. 我常用的是1.5版本的django,就以此为例来说说吧. 文档 首先对比下两个函数文档上的解释. get Returns the object matching the given lookup parameters,

[Django]orm中的外键级联删除

这里的系统环境为django1.6   os为win7 今天有个需求说的是添加一个地区表,然后用外键和几个非常重要的实体表来做关联(地区表作为其他表的外键),写完地区的删除操作的时候,测试了下代码,功能正常.可是眼睛移动到控制台输出的时候傻了 connexesql ->DELETE FROM `mngm_device` WHERE `mngm_device`.`area_id` IN (%s, %s, %s) connexesql ->DELETE FROM `ad_ad` WHERE `ad

django ORM中的复选MultiSelectField的使用

在django ORM的使用中,经常会出现选择的情况,例如: class person(odels.Model): sex_type = (('male',u'男'), ('female',u'女')) sex = models.CharField(u"性别", choices=sex_type,max_length=32) 但并不是所有的选择都是只有一个结果的,例如 class person(odels.Model): language_choices= (('chinese',u'

django ORM中的RelatedManager(关联管理器)

关联管理器应用在 一对多的表 或者 多对多的表 多对多表中的用法: 在多对多的表中 正向查询 #基于对象的查询 #正查 # author_obj = Author.objects.get(id=1) # print(author_obj) #<Author object: 1 吴晓波> # print(author_obj.book_set.all()) #出版过的所有的书 <QuerySet [<Book: 小王子>, <Book: 哈利波特>]> 在反向

django ORM中models的字段以及参数

字段: AutoField(Field)         - int自增列,必须填入参数 primary_key=True     BigAutoField(AutoField)         - bigint自增列,必须填入参数 primary_key=True         注:当model中如果没有自增列,则自动会创建一个列名为id的列         from django.db import models         class UserInfo(models.Model):

Django ORM中常用字段和参数

Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 这里需要知道的是Django中的CharFiel

Django的orm中get和filter的不同

Django的orm框架对于业务复杂度不是很高的应用来说还是不错的,写起来很方面,用起来也简单.对于新手来说查询操作中最长用的两个方法get和filter有时候一不注意就会犯下一些小错误.那么今天就来小节下这两个方法使用上的不同. 首先对比下两个函数文档上的解释. get Returns the object matching the given lookup parameters, which should be in the format described in Field lookups

django model中get()和filter()方法的区别

django的get()方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错. django的filter()方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[].

django ORM中的表关系

多对一: 为了方便理解,两个表之间使用ForeignKey连接时,使用ForeignKey的字段所在的表为从表,被ForeignKey连接的表为主表. 使用场景:书和出版社之间的关系,一本书只能由一个出版社出版,一个出版社却可以出版很多书 实现方式:一对多或者说多对一,在Django中是使用ForeignKey实现的,下面是例子: class Publisher(models.Model): id = models.AutoField(primary_key=True) name = model