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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | >>> # 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:
1 2 3 4 5 | >>> 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.