class Coalesce(*expressions, **extra)
[source]
Accepts a list of at least two field names or expressions and returns the first non-null value (note that an empty string is not considered a null value). Each argument must be of a similar type, so mixing text and numbers will result in a database error.
Usage examples:
>>> # Get a screen name from least to most public >>> from django.db.models import Sum, Value as V >>> 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 >>> aggregated = Author.objects.aggregate( ... combined_age=Coalesce(Sum('age'), V(0)), ... combined_age_default=Sum('age')) >>> print(aggregated['combined_age']) 0 >>> print(aggregated['combined_age_default']) None
Warning
A Python value passed to Coalesce
on MySQL may be converted to an incorrect type unless explicitly cast to the correct database type:
>>> from django.db.models.expressions import RawSQL >>> from django.utils import timezone >>> now = timezone.now() >>> now_sql = RawSQL("cast(%s as datetime)", (now,)) >>> Coalesce('updated', now_sql)
Please login to continue.