首页 > 数据库 >Django笔记二十六之数据库函数之数学公式函数

Django笔记二十六之数据库函数之数学公式函数

时间:2023-04-20 21:56:53浏览次数:54  
标签:数学公式 obj 函数 models MathFunction db Django objects import

本文首发于公众号: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)

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

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

标签:数学公式,obj,函数,models,MathFunction,db,Django,objects,import
From: https://www.cnblogs.com/hunterxiong/p/17338474.html

相关文章

  • Java Long对象对比,用equals函数
    文章目录一、前文二、调试三、后记一、前文同事问我一个问题,我咋一看也愣住了代码:if(ObjectUtil.isNotNull(temp.getUserId())&&temp.getUserId()!=SecurityUtils.getUserId()){logger.error(temp.toString());logger.error("SecurityUtils.getUserId()="+Secur......
  • 编写你的第一个 Django 应用程序,第8部分
    本教程从教程7停止的地方开始。我们已经构建了我们的网络投票应用程序,现在将查看第三方软件包。Django的优势之一是丰富的第三方软件包生态系统。它们是社区开发的包,可用于快速改进应用程序的功能集。本教程将展示如何添加Django调试工具栏,一个常用的第三方包。近年来,Djang......
  • 指针配合数组和函数案例(冒泡排序)
    #include<iostream>usingnamespacestd;voidmaopao(int*arr,intlen){ for(inti=0;i<len-1;i++) { for(intj=0;j<len-i-1;j++) { if(arr[j]>arr[j+1]) { inttemp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }}voidprintf(int*arr,in......
  • C#基础 readonly 构造函数初始化readonly字段
     .NETFramework:4.7.2       IDE:VisualStudioCommunity2019        OS:Windows10x64    typesetting:Markdown 基础代码codeusingSystem;namespaceConsoleApp{classMyClass{privatereadonlystringstr;pu......
  • C#基础 ref out 函数参数 不算重载的简单示例
     .NETFramework:4.7.2       IDE:VisualStudioCommunity2019        OS:Windows10x64    typesetting:Markdown codeusingSystem;namespaceConsoleApp{classProgram{staticvoidMain(string[]args){......
  • C#基础 out 函数参数为out int类型 简单示例
     .NETFramework:4.7.2       IDE:VisualStudioCommunity2019        OS:Windows10x64    typesetting:Markdown codeusingSystem;usingSystem.Linq;namespaceConsoleApp{classProgram{publicstaticvoidMyFun(int......
  • C++基础2: 优化C函数
    1.缺省参数什么是缺省参数缺省参数是声明或者定义函数时为函数的参数指定一个默认值,如果函数调用时没有传入实参,那么这个默认值会被当做实参,如下例子函数调用时,传入参数1,a=1,不传入参数,默认a=0,这里的a就是一个缺省参数缺省参数的分类缺省参数分全缺省和半缺省......
  • 阶乘 reduce函数 operator模块
       fromfunctoolsimportreducefromoperatorimportmuldeffact(n):#使用reduce和operator.mul函数计算阶乘returnreduce(mul,range(1,n+1))#使用reduce函数和一个匿名函数计算阶乘#returnreduce(lambdaa,b:a*b,range(1,n+1)) ......
  • 引用作函数形参交换两个整数
    一.问题描述:设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作。二.编程思路:1.设计一个void类型的函数swap2.设置两个引用类型的参数3.输入两个参数4.交换两个整数并输出三.代码实现:#include<iostream>usingnamespacestd;voi......
  • Django框架基础4
    一、Django过滤器用法  过滤器从字面的意思上,可以理解为:过滤掉不需要的,剩下我们需要的,Django的模板语言同样也内置了过滤器,如果你了解其他的框架对这个词一定不陌生,比如说Flask框架、Vue框架等,都内置了过滤器这个功能,在本节我们将一起学习Django框架的过滤器。1、过滤器......