Django笔记二十六之数据库函数之数学公式函数
本文首发于公众号:Hunter后端
原文链接:Django笔记二十六之数据库函数之数学公式函数
这一篇来介绍一下公式函数,主要是数学公式。
其中 sin,cos 这种大多数情况下用不上的就不介绍了,主要介绍下面几种:
- Abs() 绝对值
- Ceil() 向上取整
- Floor() 向下取整
- Mod() 取余
- Power() 乘方
- Round() 四舍五入
- 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笔记二十六之数据库函数之数学公式函数的更多相关文章
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- Java基础学习笔记二十六 JDBC
什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,J ...
- Java笔记(二十六)……IO流上 字节流与字符流
概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...
- angular学习笔记(二十六)-$http(4)-设置请求超时
本篇主要讲解$http(config)的config中的timeout项: $http({ timeout: number }) 数值,从发出请求开始计算,等待的毫秒数,超过这个数还没有响应,则返回错 ...
- PHP学习笔记二十六【类的重载】
<?php //重载: //函数名一样,通过函数的参数个数或者是参数类型不同,达到调用同一个函数名 Class A{ // public function test1(){ // echo &q ...
- 论文阅读笔记二十六:Fast R-CNN (ICCV2015)
论文源址:https://arxiv.org/abs/1504.08083 参考博客:https://blog.csdn.net/shenxiaolu1984/article/details/5103 ...
- Java学习笔记二十六:Java多态中的引用类型转换
Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...
- Python笔记(二十六)_魔法方法_属性的魔法方法
属性的魔法方法 __getattribute__(self,name):当该类的属性被访问时,自动触发,是最先被触发的属性方法 __setattr__(self,name,value):当一个属性被设 ...
- R语言学习笔记(十六):构建分割点函数
选取预测概率的分割点 cutoff<- function(n,p){ pp<-1 i<-0 while (pp>=0.02) { model.predfu<-rep(&q ...
- 深度学习(二十六)Network In Network学习笔记
深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...
随机推荐
- django_ORM基础字段和选项
一.修改ORM 1.任何关于表结构的修改,务必在对应模型类上修改. 2.在上一篇博文中,创建了bookstore_book表,如果需要再添加一个名为info(varchar 100)的字段,则需要如下 ...
- loadrunner添加头部
web_add_auto_header("token_id", "{token_id}"); 或 web_add_header("token_id&q ...
- js延迟加载、js异步加载
1.js延迟加载 (1)js延迟加载是js性能优化的一种方式 (2)作用:为了提高网页的加载速度 (3)原理:等网页加载完成之后再加载js文件 ··需要优化的原因:HTML元素是按照其在页面中出现的次 ...
- DataX Web可视化分布式调度数据同步系统
因项目需要,结合目前参与的项目,以及个人技术能力范围,组合研发一套web可视化数据同步系统,正式名称:DataXP. 项目背景:接触过阿里云这类大数据平台,对于中大型项目以及需要与外部系统对接数据的情 ...
- (3)这是一个简单的html页面,请保持为字符串,完成后面的计算要求。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Linux系统mysql免安装版配置指南
1.下载(/usr/local目录) wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x ...
- [imx6ull] 源码下载
uboot git clone https://source.codeaurora.org/external/imx/uboot-imx cd uboot-imx make distclean mak ...
- 网络安全(中职组)-B模块:服务远程控制
任务四:服务远程控制任务环境说明:服务器场景名:20200609(关闭链接)服务器场景操作系统:未知服务器场景用户名:root服务器场景密码:Admin123 1. 通过本地PC中渗透测试平台K ...
- Linux & 标准C语言学习 <DAY4>
一.数据类型 为什么要对数据进行分类 1.现实中的数据就是自带类别属性的 2.对数据进行分类可以节约内存存储空间.提高运行速度 C语言中数据分为两大类别 ...
- java面向对象-基础入门
java面向对象-基础入门 面向过程:线性思维 面向对象思维:物以类聚,分类的思维 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是具体到某个微观 ...