Если для «несуществующего» вы имеете в виду NULL
, вы можете использовать функцию Coalesce
[Django-doc] :
from django.db.models.functions import Coalesce
Item.objects.annotate(
merge_url=Coalesce('url', 'alt_url')
)
Здесь Item
s будет иметь дополнительный атрибут .merge_url
, который содержит значение url
, или, если его нет, значение alt_url
.
Тем не менее, для случая, который является довольно простым, было бы лучше добавить свойство к вашей модели:
Item(models.Model):
url = models.URLField(blank=True, null=True)
alt_url = models.URLField(blank=True, null=True)
@property
def merge_url(self):
return self.url or self.alt_url
или, если вас интересуют только эти значения, вы можете написать их следующим образом:
Item.objects.annotate(
merge_url=Coalesce('url', 'alt_url')
).values_list('merge_url', flat=True)