翼度科技»论坛 编程开发 python 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
本文首发于公众号:Hunter后端
原文链接:Django笔记二十六之数据库函数之数学公式函数
这一篇来介绍一下公式函数,主要是数学公式。
其中 sin,cos 这种大多数情况下用不上的就不介绍了,主要介绍下面几种:

  • Abs() 绝对值
  • Ceil() 向上取整
  • Floor() 向下取整
  • Mod() 取余
  • Power() 乘方
  • Round() 四舍五入
  • Sqrt() 获取平方根
我们用到下面这个 model:
  1. class MathFunction(models.Model):
  2.     x = models.FloatField(null=True, default=None)
  3.     y = models.FloatField(null=True, default=None)
复制代码
1、Abs() 绝对值

先来创建一下数据:
  1. from blog.models import MathFunction
  2. MathFunction.objects.create(x=1.2, y=-6.3)
复制代码
使用绝对值的函数:
  1. from django.db.models.functions import Abs
  2. obj = MathFunction.objects.annotate(x_abs=Abs('x'), y_abs=Abs('y')).get(id=1)
  3. print(obj.x_abs)
  4. print(obj.y_abs)
复制代码
也可以在过滤的时候用该函数,但是需要先将这个函数注册,使用方法如下:
  1. from django.db.models import FloatField
  2. from django.db.models.functions import Abs
  3. FloatField.register_lookup(Abs)
  4. MathFunction.objects.filter(x__abs__lte=2)
复制代码
2、Ceil() 向上取整

向上取整
和绝对值一样,可以在取数和过滤的时候使用
取值:
  1. from django.db.models.functions import Ceil
  2. obj = MathFunction.objects.annotate(x_ceil=Ceil('x'), y_ceil=Ceil('y')).get(id=1)
  3. print(obj.x_ceil)
  4. print(obj.y_ceil)
复制代码
过滤:
  1. from django.db.models import FloatField
  2. from django.db.models.functions import Ceil
  3. FloatField.register_lookup(Ceil)
  4. MathFunction.objects.filter(x__ceil=2)
复制代码
3、Floor() 向下取整

向下取整,使用方法同向上取整。
4、Mod() 取余

取模,也就是取余,两个数相除之后的余数。
  1. MathFunction.objects.create(x=3.6, y=1.1)
  2. from django.db.models.functions import Mod
  3. obj = MathFunction.objects.annotate(mod=Mod('x', 'y')).get(id=2)
  4. print(obj.mod)
复制代码
其效果等效于 x % y
5、Power() 乘方

乘方,Power('x', 'y') 相当于 x ** y
  1. MathFunction.objects.create(x=3, y=2)
  2. from django.db.models.functions import Power
  3. obj = MathFunction.objects.annotate(power=Power('x', 'y')).get(id=3)
  4. print(obj.power)
复制代码
6、Round() 四舍五入

四舍五入,示例如下:
  1. from django.db.models.functions import Round
  2. obj = MathFunction.objects.annotate(
  3.     x_round=Round('x'),
  4.     y_round=Round('y')
  5. ).get(id=1)
  6. print(obj.x_round)
  7. print(obj.y_round)
复制代码
7、Sqrt() 获取平方根
  1. MathFunction.objects.create(x=9, y=25)
  2. from django.db.models.functions import Sqrt
  3. obj = MathFunction.objects.annotate(x_sqrt=Sqrt('x'), y_sqrt=Sqrt('y')).get(id=4)
  4. print(obj.x_sqrt)
  5. print(obj.y_sqrt)
复制代码
以上就是本篇笔记全部内容,下一篇将介绍数据库函数之文本函数。
如果想获取更多后端相关文章,可扫码关注阅读:


来源:https://www.cnblogs.com/hunterxiong/p/17338474.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具