首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django学习笔记之Queryset详解

另外,查询到的QuerySet又是缓存的,再次使用同一个QuerySet,并不会再查询数据库,而是直接从缓存获取(不过,有一些特殊情况)。...一般而言,对一个没有求值的QuerySet进行的运算,返回的是QuerySet、ValuesQuerySet、ValuesListQuerySet、Model实例,一般不会立即查询数据库;反之,返回的不是这些类型...我们修改一下代码,如下,遍历一开始也是先执行查询得到a,但执行print (e.blog.name),还需要再次查询数据库获取blog实体。...Q查询混和使用,但不建议这样做,因为混和查询Q对象要放前面,这样就有难免忘记顺序而出错,所以如果使用Q对象,那就全部用Q对象。...,即使在查询关联了其它表,关联表的字段也不会返回,只有当我们通过Author instance用关联表Django才会再次查询数据库获取值。

2.7K30

Django ORM filter() 的运用详解

,需要靠用户传入,在这里eval()函数就提供给某些人员很好的入侵性.所以用了另外一种方式去改良代码. filter(**kwargs): 它包含了与所给筛选条件相匹配对象 条件查询 条件可以是:参数...补充知识:django orm查询中filter与get的区别 输入参数: get的参数只能是model中定义的哪些字段,只支持严格匹配 filter的参数可以是字段也可以是扩展的where查询关键字,...一个集合对象,可使用迭代或者遍历,切片等,但是不等于list类型(是一个object对象集合) 异常: get只有一条记录返回的时候正常,也就是说明get查询字段必须是主键或者唯一约束的字段。...返回多条记录或者没有找到记录的时候都会抛出异常 get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错,有多条记录也会报错。...filter有没有匹配的记录都可以 filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

1.5K40
您找到你想要的搜索结果了吗?
是的
没有找到

Django

) 但获取get() B对象 获取到所有属性,public 这个属性对应的是一个对象,若要获取某个属性,需再次加点 """ # 4,数据库中已存在数据,此时修改modules,例如添加列, # 会指定让你输入默认值...类名)_id 例:查询某个作者 1,先ret = get(id=x)得到作者 2,ret.book(是上边的manytomany的book).all() 帮助查询关联的对象 控制台打印all 有括号...="xxx" 设置关联的列 默认是id # related_name 反向操作使用的字段名,用于代替反向查询的"表名_set" # related_query_name 反向查询操作,使用的链接前缀...不写字段名,直接写字段值,默认查询所有字段 # ret = models.Person.objects.values_list() ​ # print("order_by".center...) | Q(price__lt=100)) # print(ret) # Q查询字段查询同时存在字段查询要放在Q查询的后面 后边的与前边是 与的关系 # ret = models.Book.objects.filter

3.4K20

Django之Model世界

共有下列额外的可选参数: Argument 描述 auto_now 对象被保存,自动将该字段的值设置为当前时间.通常用于表示 "last-modified" 时间戳. auto_now_add...对象首次被创建,自动将该字段的值设置为当前时间.通常用于表示对象创建时间. admin 用一个文本框 来表示该字段数据(附带一个 JavaScript..., 它是一个用来校验文本的 RelaxNG schema 的文件系统路径. 1、null=True   数据库中字段是否可以为空 2、blank=True   django的 Admin 中添加数据是否可允许空值...,归属于多个产品线当中,那么服务器与产品线之间就可以做成对多对,多对多在A表添加manytomany字段或者从B表添加,效果一致....(i),i.user,i.user_type.caption) #得到的ret是一个queryset对象,只有我们循环我们得到每一行的一个对象的时候可以用.字段名获取数据 # 想获取和其有联系表的数据的时候

2.2K20

【愚公系列】2022年04月 Python教学课程 74-DRF框架之过滤

文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...1.针对当前用户进行筛选 您可能希望筛选查询集,以确保返回与发出请求的当前经过身份验证的用户相关的结果。 为此,可以基于用户值进行筛选。...我们可以覆盖以处理 URL,例如 ,并且参数包含在 URL 中筛选查询集: class PurchaseList(generics.ListAPIView): serializer_class...category=clothing&in_stock=True 4.搜索器过滤 4.1 多字段查找 视图具有属性集,才会应用该类。...如果使用多个搜索词,则所有提供的词都匹配,才会在列表中返回对象。 搜索行为可能会因在 前面加上各种字符而受到限制。search_fields “^”以搜索开头。 “=”完全匹配

2.5K30

Django models filter筛选条件详解

使用values会生成ValuesQuerySet(形如N个dict组成的list),猜测大数据无额外性能影响,毕竟queryset系列都是使用时查询操作的。...先说下django的obj.get(): django的get是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。...比如我数据库里有一条记录,记录的name的值是”django”的话,我用student = Student.objects.get(name=’django’), 返回的是一个记录对象,你可以通过student...__dict__来查看,它返回的是一个字典的形式,{’key’:valeus},key是字段的名称,而values是值的内容。 而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。...再说下django filter: django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。

3.6K21

django-搭建BBS关键点总结

0826自我总结 django-搭建BBS关键点总结 一.关于开口子,直接输入url访问文件内容 django自带开了个口子是static文件可以直接访问到 手动开口子 urs.py from django.views.static...P.*),前面的路径等同于后面设置的路径,而下面正则匹配的内容为内容的拼接前面的就是完整的一个路径,这样就可以url直接访问文件夹 二.关于登入验证码中解决并发的问题 解决方法:将code存在...,user) 也可以在网页中完成是否登入的判断 {% if request.user.is_authenticated %} 完成注销操作 auth.logout(request) 五.表单的查找 #查询当前站点下所有标签对应的文章数...#查询当前站点下所有分类对应的文章数 # 查询所有分类对应的文章数 # 分组查询固定规则: # filter 在annotate前表示where条件 # values 在annotate前表示group...annotate(字段名称=聚会函数) annotate 前面有values时候,主要是加快的查询的速度,values中必须要有annotate的依据 六.自定义文件夹存储路径 settings.py

56220

Django实现将views.py中的数据传递到前端html页面,并展示

补充知识:Django views.py 和 html 之间参数传递关系 Django中的View部分,就是如何用代码来与models中定义的字段进行交互。...的函数做了哪些工作吧: List.objects.all方法返回news列表中所有的记录项,Django可以根据后台数据库转换成相应的SQL语句,在后台数据库中执行并返回查询结果。...Django的View和Template都已经准备妥当,下面需要几步配置来告诉Django存储工程应用的模板位置,这需要对配置文件setting.py中的TEMPLATE_DIRS项进行设置。.../article/templates', 这里不要忘记Django需要在路径的最末尾添加一个逗号。接下来需要设置访问article的URL转向地址就可以。...在应用中写的Python代码不过几十行,比较起来其他的开发语言,Django显得非常便捷实用,最后再来回顾一下Django都帮助我们做了哪些工作吧: 通过Django对象关系映射模型建立了存储新闻分类以及新闻项的两张数据表

8.9K10

05.Django基础五之django模型层(一)单表操作

共有下列额外的可选参数: Argument 描述 auto_now 对象被保存(更新或者添加都行),自动将该字段的值设置为当前时间.通常用于表示 "last-modified...auto_now_add 对象首次被创建,自动将该字段的值设置为当前时间.通常用于表示对象创建时间. (仅仅在admin中有意义......(): 查询所有结果,结果是queryset类型 filter(**kwargs): 它包含了与所给筛选条件相匹配对象,结果也是queryset...,在 Django 删除对象,会模仿 SQL 约束 ON DELETE CASCADE 的行为,换句话说,删除一个对象也会删除与它相关联的外键对象。...查询价格在100到200之间的所有书籍名称及其价格 5 查询所有人民出版社出版的书籍的价格(从高到低排序,去重)   关于django连接mysql的指定严格模式的配置 DATABASES = {

2.9K10

Django相关知识点回顾

all 无 查询模型类对应表格中的所有数据 QuerySet(查询集) get 查询条件 查询满足条件一条且只能有一条数据 模型类对象,查不到会报错DoesNotExist filter 查询条件 返回满足条件的所有数据...QuerySet(查询集) exclude 查询条件 返回不满足条件的所有数据 QuerySet(查询集) order_by 排序字段查询结果进行排序 QuerySet(查询集) aggregate...= 值 可以写多个查询条件,默认是且的关系 F对象: 用于查询字段之间的比较 from django.db.models import F Q对象: 用于查询条件之间的逻辑关系 from django.db.models...()过滤器调用聚合函数 排序: 排序默认是升序,降序在排序字段前加- 使用order_by 关联查询: 1.查询和指定对象关联的数据 # 由1查多 一对象.多类名小写_set.all() 例:book.heroinfo_set.all...查询结果的缓存 使用同一个查询,只有在第一次使用查询集时会进行数据库的查询操作,然后Django框架就会把查询的结果存起来,下一次再使用这个查询,使用的Django之前存储的结果。

10K51

Python的Django框架实现数据库查询(不返回QuerySet的方法)

三、以上方法的使用: 1.get()方法: 返回按照查询参数匹配到的单个对象,若匹配到的对象个数不只一个的话,会触发MultipleObjectsReturned异常,若根据参数匹配不到对象的时候,...4. get_or_create() 方法: get_or_create(defaults=None, **kwargs) 通过kwargs来查询对象的简便方法(若模型中所有字段都有默认值或可以为空...from django.db.models import Count # 获取课程名称name="信息科技大学", 将name字段进行聚合统计 course_dict = models.Course.objects.filter...如果未提供列表,则会返回查询集中所有对象。...QuerySet通常会再内部缓存其结果,以便再重复计算不会导致额外的查询

2.5K30

年薪20万Python工程师进阶(5):Python ORM框架之 Peewee入门

ORM是什么 之前在学Django,发现它的模型层非常好用,把对数据库的操作映射成对类、对象的操作,避免了我们直接写在Web项目中SQL语句,当时想,如果这个模型层可以独立出来使用就好了,那我们平台操作数据库也可以这么玩了...后来知道,原来这个叫ORM(Object Relational Mapping,对象关系映射),在Python下面有很多这样的类库,如SQLObject、Storm、peewee和SQLAlchemy...再接下来就是表的创建了,我们在SQL语句创建表一般需要知道以下信息。表的名字,表有哪些字段?这些字段分别是什么类型?是否允许为空,或自增?哪个字段是主键是?哪个是外键?...不对,我们没有创建user_id字段啊!但是,如果你查询Tweet表,就会发现有这个字段,用它来关联User表的id。 image 四、查询数据 接下来,查询数据。...当我们在安装peewee,也会捎带着把它装上。 这里只介绍它里面的model_to_dictdict_to_model两个方法。

1.3K20

Django 之 Models(Models 模型 & 数据表关系)

: 把面向对象思想转换成关系数据库思想,操作上把类等价于表格 类对应表格 类中的属性对应表中的字段 在应用中的models.py 文件中定义class 所有需要使用ORM的class都必须是 models.Model...的子类 class 中的所有属性对应表格中的字段 字段的类型都必须使用 modles.xxx 不能使用python中的类型 在django中,Models 负责跟数据库交互 django连接数据库 自带默认数据库...ORM 的class都必须是models.Models 的子类 class中的所有属性对应表格中的字段 字段的类型都需使用 models.xxx 不能使用python 中的类型 字段常用参数 --- max_length...查询命令 - 类名.objects.all() 查询数据表中的所有内容,返回的结果是一个 QuerySet 类型,实际上是类列表中装这个一个一个数据对象 - 类名.objects.filter...类型 Student.objects.all() # 如果要取出所有QuerySet类型中的所有数据对象,需要遍历取出所有对象,再用对象.属性来查看值 s = Student.object.all(

2.3K87

django 1.8 官方文档翻译: 2-5-6 多数据库

没有选择其它数据库Django 使用具有default 别名的数据库。...默认的路由模式确保对象’粘滞‘在它们原始的数据库上(例如,从foo 数据库中获取的对象将保存在同一个数据库中)。默认的路由模式还确保如果没有指明数据库,所有查询都回归到default数据库中。...路由不必提供所有这些方法 —— 它可以省略一个或多个。如果某个方法缺失,在做相应的检查Django 将忽略该路由。...PrimaryReplicaRouter 中实现的捕获所有查询,这意味着所有的模型可以位于所有的数据库中。...保存在statement 2中发生,p已经具有一个主键,Django 将尝试在新的数据库上使用该主键。

1.5K20
领券