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笔记。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值