本文首发于公众号:Hunter后端

原文链接:Django笔记二十六之数据库函数之数学公式函数

这一篇来介绍一下公式函数,主要是数学公式。

其中 sin,cos 这种大多数情况下用不上的就不介绍了,主要介绍下面几种:

  1. Abs() 绝对值
  2. Ceil() 向上取整
  3. Floor() 向下取整
  4. Mod() 取余
  5. Power() 乘方
  6. Round() 四舍五入
  7. Sqrt() 获取平方根

我们用到下面这个 model:

class MathFunction(models.Model):
x = models.FloatField(null=True, default=None)
y = models.FloatField(null=True, default=None)

1、Abs() 绝对值

先来创建一下数据:

from blog.models import MathFunction

MathFunction.objects.create(x=1.2, y=-6.3)

使用绝对值的函数:

from django.db.models.functions import Abs

obj = MathFunction.objects.annotate(x_abs=Abs('x'), y_abs=Abs('y')).get(id=1)

print(obj.x_abs)
print(obj.y_abs)

也可以在过滤的时候用该函数,但是需要先将这个函数注册,使用方法如下:

from django.db.models import FloatField
from django.db.models.functions import Abs FloatField.register_lookup(Abs)
MathFunction.objects.filter(x__abs__lte=2)

2、Ceil() 向上取整

向上取整

和绝对值一样,可以在取数和过滤的时候使用

取值:

from django.db.models.functions import Ceil

obj = MathFunction.objects.annotate(x_ceil=Ceil('x'), y_ceil=Ceil('y')).get(id=1)

print(obj.x_ceil)
print(obj.y_ceil)

过滤:

from django.db.models import FloatField
from django.db.models.functions import Ceil FloatField.register_lookup(Ceil)
MathFunction.objects.filter(x__ceil=2)

3、Floor() 向下取整

向下取整,使用方法同向上取整。

4、Mod() 取余

取模,也就是取余,两个数相除之后的余数。

MathFunction.objects.create(x=3.6, y=1.1)

from django.db.models.functions import Mod

obj = MathFunction.objects.annotate(mod=Mod('x', 'y')).get(id=2)
print(obj.mod)

其效果等效于 x % y

5、Power() 乘方

乘方,Power('x', 'y') 相当于 x ** y

MathFunction.objects.create(x=3, y=2)

from django.db.models.functions import Power

obj = MathFunction.objects.annotate(power=Power('x', 'y')).get(id=3)
print(obj.power)

6、Round() 四舍五入

四舍五入,示例如下:

from django.db.models.functions import Round

obj = MathFunction.objects.annotate(
x_round=Round('x'),
y_round=Round('y')
).get(id=1) print(obj.x_round)
print(obj.y_round)

7、Sqrt() 获取平方根

MathFunction.objects.create(x=9, y=25)

from django.db.models.functions import Sqrt

obj = MathFunction.objects.annotate(x_sqrt=Sqrt('x'), y_sqrt=Sqrt('y')).get(id=4)

print(obj.x_sqrt)
print(obj.y_sqrt)

以上就是本篇笔记全部内容,下一篇将介绍数据库函数之文本函数。

如果想获取更多后端相关文章,可扫码关注阅读:

Django笔记二十六之数据库函数之数学公式函数的更多相关文章

  1. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  2. Java基础学习笔记二十六 JDBC

    什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...

  3. Java笔记(二十六)……IO流上 字节流与字符流

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  4. angular学习笔记(二十六)-$http(4)-设置请求超时

    本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错 ...

  5. PHP学习笔记二十六【类的重载】

    <?php //重载: //函数名一样,通过函数的参数个数或者是参数类型不同,达到调用同一个函数名 Class A{ // public function test1(){ // echo &q ...

  6. 论文阅读笔记二十六:Fast R-CNN (ICCV2015)

    论文源址:https://arxiv.org/abs/1504.08083 参考博客:https://blog.csdn.net/shenxiaolu1984/article/details/5103 ...

  7. Java学习笔记二十六:Java多态中的引用类型转换

    Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...

  8. Python笔记(二十六)_魔法方法_属性的魔法方法

    属性的魔法方法 __getattribute__(self,name):当该类的属性被访问时,自动触发,是最先被触发的属性方法 __setattr__(self,name,value):当一个属性被设 ...

  9. R语言学习笔记(十六):构建分割点函数

    选取预测概率的分割点 cutoff<- function(n,p){ pp<-1 i<-0 while (pp>=0.02) { model.predfu<-rep(&q ...

  10. 深度学习(二十六)Network In Network学习笔记

    深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...

随机推荐

  1. vuw3学习大全(2)

    # composition(组合式api) ## 1.为什么使用composition vue3里面不需要Mixins了?因为有compoition api 能讲逻辑进行抽离和复用 大型组件中,其中* ...

  2. 开发者工具与idea代码缺失

    开发者工具与idea代码缺失 当categoryList为空时,<dd></dd>之间显示结果为无,所以开发者工具也无这段代码.

  3. 【javascript】chormeV8源码阅读之 GC(垃圾回收)过程 笔记

    1.为何需要垃圾回收     在V8引擎逐行执行JavaScript代码的过程中,当遇到函数的情况时,会为其创建一个函数执行上下文(Context)环境并添加到调用堆栈的栈顶,函数的作用域(handl ...

  4. Vue解决后台传过来的时间展示时带T

    用空格替换: {{scope.row.ctime.toLocaleString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')}} 参考作者:https: ...

  5. 初学-javaFX

    使用javaFX做一个简单的音乐播放器 主要功能 1:加载歌曲列表 2:加载歌曲对应歌词 3:歌曲播放进度显示 4:歌词滚动 5:播放  暂停  上一首 下一首 界面如下 组件说明: 1:页面布局 容 ...

  6. ADOStoredProc动态调用存储过程

    有些用ADOStoredProc进行操作时,要动态创建输入输出参数,一定要用 ADOStoredProc1.Parameters.Refresh;将参数进行刷新一下.

  7. IPAD变成电脑的副屏

    IPAD变成电脑的副屏方法一:把平板电脑变成显示器:Splashtop Wired XDisplayhttps://www.splashtop.cn/cn/wiredxdisplay方法二:space ...

  8. 2022中职组网络空间安全 A模块

    A-1任务一 登录安全加固 1.密码策略(Windows,Linux) 主要是针对windows和Linux的系统加固,类似于运维的题目 a.设置最短密码长度为15: 这里并没有说明具体是Window ...

  9. 4种API性能恶化根因分析

    摘要:服务发生性能恶化时,需要投入大量人力分析性能异常根因,分析成本高,耗时长.我们提出了一种先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚的二级分析方法,克服了调用链之间异常相 ...

  10. hadoop 第二期

    Hive 启动hive 使用命令`hive` 输入命令之后要有一个 ; 结尾!!!!!!! DDL命令 1.创建数据表 create table lxl( num int, name string, ...