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

Django学习笔记之Django ORM Aggregation聚合详解

在当今根据需求而不断调整而成的应用程序中,通常不仅需要能依常规的字段,如字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序。Djngo聚合就能满足这些要求。...查询出版最久的书的出版日期: >>> Publisher.objects.aggregate(oldest_pubdate=Min('book__pubdate')) 查询每个作者写的书的总页数: >>...但是第一个查询的注解包含其该出版商发行的所有图书的总数;而第二个查询的注解只包含出版过好书的出版商的所发行的好书(评分大于3分)总数。在第一个查询中,注解在过滤器之前,所以过滤器对注解没有影响。...=Count('authors')).order_by('num_authors') values() 通常,注解annotate是添加到每一个对象上的,一个执行了注解操作的查询集 QuerySet 所返回的结果中...,每个对象都添加了一个注解值。

1.1K20

django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用

创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。...editable=False导致字段不会被呈现在admin中,blank=Ture表示允许在表单中不输入值。...此时,如果在admin的fields或fieldset中强行加入该日期时间字段,那么程序会报错,admin无法打开;如果在admin中修改对象时,想要看到日期和时间,可以日期时间字段添加到admin类的...django中所有的model字段都拥有一个default参数,用来给字段设置默认值。...timezone.now对应着django.utils.timezone.now(),因此需要写成类似下面的形式: from django.db import models import django.utils.timezone

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

Django REST Framework-如何使用过滤器

Django REST Framework (DRF) 是一个开源的 Web 框架,它建立在 Django 上,可以帮助你轻松地构建 RESTful API。...,可以用于过滤日期类型的字段;NumberFilter:使用数字过滤,可以用于过滤数字类型的字段;RangeFilter:使用范围过滤,可以用于过滤数字、日期等类型的字段。...我们 SearchFilter、OrderingFilter 和 RangeFilter 过滤器添加到了 filter_backends 属性中,以便我们可以使用这些过滤器来对 Book 模型进行搜索...我们 ordering 属性设置为 ['-published_date'],以便我们可以数据按照发布日期的降序排列。...例如,下面的代码展示了如何 PriceFilterBackend 添加到我们的视图集合中:class BookViewSet(viewsets.ModelViewSet): queryset =

1.9K40

Django操作session 的方法

#调用request.session首先会接收请求头部的cookie是否有sessionid,进行表查询对比 #如果有重新生成一个sessionid进行覆盖更新记录,并将随机生成的sessionid添加到...cookie返回前端 # 没有则新建存进表中的session_key,同时字典信息加密自动存进表中的session_data字段 request.session[‘status’]=True # 存在自动覆盖...request.session.clear_expired()# 所有Session失效日期小于当前日期的数据删除,将过期的删除 del request.session[‘k1’]#django-session...Django中的Session配置 Django中默认支持Session,其内部提供了5种类型的Session供开发者使用。 1....# 是否Session的cookie只支持http传输(默认) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期

1.2K20

使用 Django 项目中的 ORM 编写伪造测试数据脚本

脚本就是一段普通的 Python 代码,非常简单,但是通过这个脚本你学会如何在 django 外使用 ORM,而不仅仅在 django 应用的内部模块使用。...import faker from django.utils import timezone # 项目根目录添加到 Python 的模块搜索路径中 back = os.path.dirname BASE_DIR...back(back(os.path.abspath(__file__))) sys.path.append(BASE_DIR) 这一段很简单,只是导入一些会用到的模块,然后通过脚本所在文件找到项目根目录,根目录添加到...然后就是 2 个 Faker 的 API 了: fake.date_time_between 这个方法返回 2 个指定日期间的随机日期。三个参数分别是起始日期,终止日期和时区。...我们在这里设置起始日期为 1 年前(-1y),终止日期为当下(now),时区为 get_current_timezone 返回的时区,这个函数是 django.utils.timezone 模块的辅助函数

1.2K10

django 1.8 官方文档翻译: 4-2-4 人性化

Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。...网站:http://python.usyiyi.cn/django/index.html django.contrib.humanize 一系列Django的模板过滤器,有助于向数据添加“人文关怀”...把’django.contrib.humanize’添加到INSTALLED_APPS设置来激活这些过滤器。...自然日期 对于当天或者一天之内的日期, 返回“今天”,“明天”或者“昨天”,视情况而定。否则,使用传进来的格式字符串给日期格式化。 参数:日期的格式字符串在date标签中描述。...序数词 一个整数转化为它的序数词字符串。 例如: 1 会变成 1st。 2 会变成 2nd。 3 会变成 3rd。 你可以传递整数,或者整数的字符串形式。

26330

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

例如,要得到每个书店的价格区别,可以使用如下注解: >>> from django.db.models import Max, Min >>> Store.objects.annotate(min_price...QuerySet进行排序: >>> Book.objects.annotate(num_authors=Count('authors')).order_by('num_authors') values() 通常,注解添加到每个对象上...如果 values() 子句在 annotate() 子句之前,注解会被自动添加到结果集中;但是,如果 values() 子句作用于annotate() 子句之后,你需要显式地包含聚合列。...Django 永远不会 删除你所指定的排序限制(我们不能改动那些方法的行为,因为这会违背 API stability 原则)。 聚合注解 你也可以在注解的结果上生成聚合。...例如,如果你想计算每本书平均有几个作者,你先用作者总数注解图书集,然后再聚合作者总数,引入注解字段: >>> from django.db.models import Count, Avg >>> Book.objects.annotate

1.6K30

如何在Django中使用聚合的实现示例

在大多数情况下,我们对数据类型为“整数”,“浮点数”,“日期”,“日期时间”等的列使用聚合。 本质上,聚合不过是对一组行执行操作的一种方式。在数据库中,它们由运算符表示为sum,avg等。...文件 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes...', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Myapp...admin.site.register(Book) admin.site.register(Author) admin.site.register(Publisher) 之后,您需要打开管理面板并将一些项目添加到数据库中...之后,我们启动聚合命令。 现在您需要打开django shell,因为我们django shell用于我们的聚合命令。

1.7K31

这些Java8官方挖的坑,你踩过几个?

日期明明间隔1年却输出1天,难不成这是天上人间?1582年神秘消失的10天JDK能否识别?Stream很高大上,List转Map却全失败……这些JDK8官方挖的坑,你踩过几个?...最怕相思浓 一切皆是你 唯独 不敢说出你的名字 -- 码大叔 这个问题是在使用springboot的注解时遇到的,发现JDK在解析注解时,若注解依赖的类定义在JVM加载时不存在,也就是NoClassDefFoundError...网上的大部分文章也是这么描述的,于是计算两个日期间隔可以写成下面这样的代码: // parseToDate方法作用是String转为LocalDate,略。...正确写法1: long period = date2.toEpochDay()-date1.toEpochDay(); toEpochDay():日期转换成Epoch 天,也就是相对于1970-01...“码大叔”成功地添加到了List里?天真,不报个错你怎么能意识到JDK存在呢。

86021

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

对开发人员来说,Django的ORM 确实非常实用,但是数据库的访问抽象出来本身是有成本的,那些愿意在数据库中探索的开发人员,经常会发现修改 ORM 的默认行为可以带来性能的提升。...在本文中,我分享在 Django 中使用数据库的 9 个技巧。 1....PostgreSQL 不支持间隔类型字段的求标准偏差操作,我们需要将时间间隔转换为数字,然后才能对它应用 STDDEV_POP 操作。...这个 of 选项被添加到 select_for_update ,使用 of 可以指明我们要锁定的表,self 是一个特殊的关键字,表示我们要锁定我们正在处理的模型,即事务表。...但是现在,通过 Django 1.11 支持索引,我们可以轻松地新类型的索引整合到我们的应用程序中,使它们更轻,更快。

2.8K40
领券