当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django Coalesce用法及代码示例


本文介绍 django.db.models.functions.Coalesce 的用法。

声明

class Coalesce(*expressions, **extra)

接受至少两个字段名称或表达式的列表并返回第一个非空值(请注意,空字符串不被视为空值)。每个参数必须是相似的类型,因此混合文本和数字将导致数据库错误。

使用示例:

>>> # Get a screen name from least to most public
>>> from django.db.models import Sum
>>> from django.db.models.functions import Coalesce
>>> Author.objects.create(name='Margaret Smith', goes_by='Maggie')
>>> author = Author.objects.annotate(
...    screen_name=Coalesce('alias', 'goes_by', 'name')).get()
>>> print(author.screen_name)
Maggie

>>> # Prevent an aggregate Sum() from returning None
>>> # The aggregate default argument uses Coalesce() under the hood.
>>> aggregated = Author.objects.aggregate(
...    combined_age=Sum('age'),
...    combined_age_default=Sum('age', default=0),
...    combined_age_coalesce=Coalesce(Sum('age'), 0),
... )
>>> print(aggregated['combined_age'])
None
>>> print(aggregated['combined_age_default'])
0
>>> print(aggregated['combined_age_coalesce'])
0

警告

传递给 MySQL 上的 Coalesce 的 Python 值可能会转换为不正确的类型,除非显式转换为正确的数据库类型:

>>> from django.db.models import DateTimeField
>>> from django.db.models.functions import Cast, Coalesce
>>> from django.utils import timezone
>>> now = timezone.now()
>>> Coalesce('updated', Cast(now, DateTimeField()))

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.db.models.functions.Coalesce。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。