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

Django 模型查询2.3

查询集 字段查询:比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问...,[0:1].get()引发DoesNotExist异常 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问 在新建的查询集中,缓存为空,首次对查询集求值时,会发生数据库查询,django会将查询的结果存在查询集的缓存中...,并返回请求的结果,接下来对查询集求值将重用缓存的结果 情况一:这构成了两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载 print([e.title for e in Entry.objects.all...比较>部分,表示等于,结果同inner join 可返向使用,即在关联的两个模型中都可以使用 filter(heroinfo_ _hcontent_ _contains='八') 查询的快捷方式:pk...,会合并为And进行 需要进行or查询,使用Q()对象 Q对象(django.db.models.Q)用于封装一组关键字参数,这些关键字参数与“比较运算符”中的相同 from django.db.models

2.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    django模型

    每个模型对 应数据库中唯一的一张表 如何编写模型 模型:每个模型都用一个类表示,该类继承自django.db.models.Model。...但在通常情况下,你往往想要获取 的是完整数据集的一个子集。 要创建这样一个子集,你需要在原始的的查询集上增加一些过滤条件。...两个最普遍的途径 是: filter(**kwargs)返回一个新的查询集,它包含满足查询参数的对象。 exclude(**kwargs)返回一个新的查询集,它包含不满足查询参数的对象。...最后的结果仍然是一个查询集,它包含标题以”What“开 头、发布日期在2005年1月30日至当天之间的所有记录 过滤后的查询集是独立的 每次你筛选一个查询集,得到的都是全新的另一个查询集,它和之前的查询集之间没有任何绑...当你确实需要结果时, 查询集 通过访问数据库来求值 获取一个单一的对象——get() filter() 始终给你一个查询集,即使只有一个对象满足查询条件 —— 这种情况下,查询集将 只包含一个元素。

    3.1K20

    Django模型model

    : 根据对象的类型生成数据库表结构 将对象、列表的操作,转换为sql语句 将sql查询到的结果转换为对象、列表 Django中的模型包含存储数据的字段和约束,对应着数据库中唯一的表 ORM.png 2....接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象(1)模型类查询集合 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:...,直接使用[0] 模型查询集的缓存 这构成了两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载 print([e.title for e in Entry.objects.all...,但是如果这部分不在缓存中,那么接下来查询返回的记录将不会被缓存,这意味着使用索引来限制查询集将不会填充缓存,如果这部分数据已经被缓存,则直接使用缓存中的数据 比较运算符:表示两个下划线,左侧是属性名称...> 比较>注:可以没有比较>部分,表示等于,结果同inner join可返向使用,即在关联的两个模型中都可以使用filter(heroinfohcontent__contains='八')

    15310

    Django—模型

    语法如下:   说明:属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线。...list = BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1)) F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?...缓存:使用同一个查询集,第一次使用时会发生数据库的查询,然后把结果缓存下来,再次使用这个查询集时会使用缓存的数据。 查询集的缓存 每个查询集都包含一个缓存来最小化对数据库的访问。...情况一:如下是两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载。...book=BookInfo.objects.get(pk=1) 例:获得book图书的所有英雄。 book.heroinfo_set.all() 例:获得编号为1的英雄。

    6.1K21

    Django中数据库的相关操作

    过滤条件的表达语法如下: 属性名称__比较运算符=值 # 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线 1)相等 exact:表示判等。 例:查询编号为1的图书。...BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1)) F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?...QuerySet 1 概念 Django的ORM中存在查询集的概念。...查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据。...情况一:如下是两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载。

    2.2K50

    Django教程 —— 模型类条件查询

    引言 在之前的 Django模型设计 中简单的介绍了如何利用模型类对数据库进行增删改查,在这篇中主要介绍使用模型类对数据库进行条件查询。让大家更加熟悉 Django 操作数据库。...通过 属性名_id 表示外键对应对象的 id 值。 语法如下: 属性名称__比较运算符=值 说明:属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线。...说明:如果要包含%无需转义,直接写即可。 例:查询书名包含 传 的图书。...例:查询书名以’部’结尾的图书 books = BookInfo.objects.filter(title__endswith='部') 以上运算符都区分大小写,在这些运算符前加上 i 表示不区分大小写...books = BookInfo.objects.filter(pub_date__gt=date(1960, 1, 1)) F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?

    1.1K20

    【愚公系列】2022年01月 Python教学课程 42-Django框架之ORM中查询详解

    过滤条件的表达语法如下: 属性名称__比较运算符=值 # 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线 查询编号为1的图书 查询书名包含'湖'的图书 查询书名以'部'结尾的图书...,两个属性怎么比较呢?...查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据。...使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。...情况一:如下是两个查询集,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载。

    1.9K40

    django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询

    网站:http://python.usyiyi.cn/django/index.html 进行原始的sql查询 在模型查询API不够用的情况下,你可以使用原始的sql语句。...警告 传递给raw()方法的sql语句并没有任何检查。django默认它会返回一个数据集,但这不是强制性的。如果查询的结果不是数据集,则会产生一个错误。...如果你在一个字符串类型的列上查询一个整数类型的值,mysql会在比较前强制把每个值的类型转成整数。...Django 使用主键来识别模型的实例,所以它在每次原始查询中都必须包含。如果你忘记包含主键的话,会抛出一个InvalidQuery异常。 增加注解 你也可以在查询中包含模型中没有定义的字段。...在这些情况下,你可以直接访问数据库,完全避开模型层。 django.db.connection对象提供了常规数据库连接的方式。

    94320

    django_2

    要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询集 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...概念:查询集表示从数据库获取的对象集合,查询集可以有多个过滤器。...过滤器:过滤器就是一个函数,基于所给的参数限制查询集结果,返回查询集的方法称为过滤器。 查询经过过滤器筛选后返回新的查询集,所以可以写成链式调用。.../缓存集 查询集的缓存:每个查询集都包含一个缓存,来最小化对数据库的访问 在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,django会将查询出来的数据做 一个缓存,并返回查询结果...,以后的查询直接使用查询集的缓存。

    3.6K30

    37.Django1.11.6文档

    Django 提供F表达式 来允许这样的比较。 F() 返回的实例用作查询内部对模型字段的引用。 这些引用可以用于查询的filter 中来比较相同模型实例上不同字段之间值的比较。...当你最初获取数据时不知道是否需要这些特定字段的情况下,如果你正在使用查询集的结果,你可以告诉Django不要从数据库中检索它们。...Author, fields=('name', 'title'), formset=BaseAuthorFormSet) 如果想返回不包含任何已存在模型实例的表单集,可以指定一个空的查询集(QuerySet...它接受请求,应用当前过滤器的查询集以及用户提供的搜索项。 它返回一个包含被修改以实现搜索的查询集的元组,以及一个指示结果是否可能包含重复项的布尔值。...您必须确定通过搜索方法实现的查询集更改是否可能在结果中引入重复项,并在返回值的第二个元素中返回True。

    24.4K80

    Django入门

    这篇文章是看了Django官方文档并进行练习之后总结的笔记,主要总结入门需要了解的几个知识点: 使用Django创建项目。 路径匹配,一个请求路径是如何映射到对应的回调函数。...不同Django版本可以使用的对应的Python版本 数据库安装(包含除MySQL外的其他数据库) 2.安装Django 先创建一个虚拟环境并切换到该虚拟环境中,这样保证将Django安装在该虚拟环境中...import Todo >>> Todo.objects.all() , ]> 复制代码 (2) 使用filter返回包含匹配查询参数的对象的结果集...(3) 使用exclude返回一个不包含给定查询参数的结果集: >>> Todo.objects.exclude(created_time__year=2021) 复制代码...(5) 限制查询结果集 >>> Todo.objects.all()[1:5] ]> 复制代码 等同于OFFSET 1 LIMIT 5,返回从偏移位置

    1.5K00

    django 1.8 官方文档翻译: 3-4-2 内建显示视图

    的确,大多数来自Django开发新手 的问题是如何能使得通用视图的使用范围更广。...要在你自己想要改变上下文的类中保持这一行为,你应该确保在超类中调用了get_context_data。如果没有任意两个类尝试定义相同的键,会返回异常的结果。...然而,通过使用queryset来定义一个过滤的对象列表,你可以更加详细 的了解哪些对象将会被显示的视图中(参见执行查询来获取更多关于查询集对象的更对信息,以及参见 基于类的视图参考来获取全部 细节)。...Book.objects.filter(publisher__name='Acme Publishing') template_name = 'books/acme_list.html' 注意,除了经过过滤之后的查询集...pk - 这个名字是DetailView用来查找主键的值的默认名称,其中主键用于过滤查询集。

    1.4K40

    Django rest Framework入门 四 :视图

    ,而且如果不了解里面的细节,当以后遇到需要定制化的工作时可能就无从下手,这一篇笔记会记录一些我自己认为比较重要切常用的实现细节。...): ''' 查询某一个具体的书本信息 url类似于127.0.0.1:8000/books/bookinfos/id; 相对于 查询多个...其中GET请求方法有两个函数,一个是list,一个是retrieve,分别是查所有记录和查单一记录,区别在于url最后有没有捕捉“pk”(主键)这个参数。...# 实现自定义的API 上面两个案例中,不管是使用ModelViewSet还是ViewSet,实现的都是对数据库的增删查改这四种功能,但是实际开发过程中,往往还有其他一些比较复杂的场景,这个时候就需要自定义开发一些...另外视图类的as_view方法决定了路由的分发机制,也是比较重要一个点。

    11910

    提升Django性能数据库优化与ORM调优技巧详解

    使用索引 索引是提高数据库查询效率的关键。在Django中,可以通过在模型的字段上添加db_index=True来为字段创建索引。...优化查询集 在处理查询集时,尽量避免使用all()方法,而是根据实际需求选择只取需要的字段或者进行过滤操作,以减少数据传输和处理的开销。...from myapp.models import MyModel # 不推荐的查询方式 items = MyModel.objects.all() # 推荐的查询方式 items = MyModel.objects.filter...使用Raw SQL 在某些情况下,使用原生的SQL语句可能比ORM更高效。Django允许执行原生SQL查询,这在需要进行复杂的数据操作时非常有用。...连接池可以在应用程序启动时创建一组数据库连接,并在需要时将连接提供给请求。这样可以减少连接创建和销毁的开销,提高数据库访问效率。

    33720

    Web | Django 与数据库交互,你需要知道的 9 个技巧

    查询集的结果变为具名元组(QuerySet results as namedtuples) 我是一个 namedtuples 的粉丝,同时也是 Django 2.0 的 ORM 的粉丝。...我们限制某一个查询的返回不超过 100 行数据: # bad example data = list(Sale.objects.all())[:100] 这很糟糕,因为虽然只返回 100 行数据,但是其实你已经把所有的行都取出来放进了内存...事务与锁的控制 这个比较难。由于数据库中的锁机制,我们开始在半夜发现事务超时错误。...事务操作通常会涉及用户和产品的一些属性,所以我们经常使用 select_related 来强制 join 并保存一些查询。 更新交易还会涉及获得一个锁来确保它不被别人获得。 现在,你看到问题了吗?...User) 在上面的模型中,Django 将会隐式的创建两个索引:一个用于用户,一个用于组。

    2.9K40
    领券