当前位置 : 主页 > 编程语言 > python >

django中的Case,When,then用法

来源:互联网 收集:自由互联 发布时间:2022-06-20
# 参考文档 https://docs.djangoproject.com/en/2.2/ref/models/conditional-expressions/ # Case()接受任意数量的When()对象作为单独的参数。使用关键字参数提供其他选项。 # 如果没有任何条件计算为TRUE,则
# 参考文档
https://docs.djangoproject.com/en/2.2/ref/models/conditional-expressions/

# Case()接受任意数量的When()对象作为单独的参数。使用关键字参数提供其他选项。
# 如果没有任何条件计算为TRUE,则default返回带有关键字参数的表达式。如果default未提供参数,None则使用。
# 通俗点说就是当满足When条件时,就使用then后面给出的值。
# 示例
from datetime import date, timedelta
from django.db.models import Case, CharField, Value, When
>>> Client.objects.create(
name='Jane Doe',
account_type=Client.REGULAR,
registered_on=date.today() - timedelta(days=36))
>>> Client.objects.create(
name='James Smith',
account_type=Client.GOLD,
registered_on=date.today() - timedelta(days=5))
>>> Client.objects.create(
name='Jack Black',
account_type=Client.PLATINUM,
registered_on=date.today() - timedelta(days=10 * 365))
>>> Client.objects.annotate(
discount=Case(
When(account_type=Client.GOLD, then=Value('5%')),
When(account_type=Client.PLATINUM, then=Value('10%')),
default=Value('0%'),
output_field=CharField(),
),
).value_list('name', 'discount')
<QuerySet [('Jane Doe', '0%'), ('James Smith', '5%'), ('Jack Black', '10%')]>


-------------------------------------------

个性签名:代码过万,键盘敲烂!!!

如果觉得这篇文章对你有小小的帮助的话,记得“推荐”哦,博主在此感谢!


上一篇:auth模块的一些方法
下一篇:没有了
网友评论