﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31614	order_by() with expressions crashes on union() querysets.	Laurent Tramoy	Laurent Tramoy	"I have read the recent tickets about unions and order_by (#31496, #27995, #30628) , and my bug is slightly different, so I hope it's not a duplicate. 

Let's consider two similar models: 

{{{
class EntityA(models.Model):
    name_a = models.CharField(max_length=128, null=True)
    dt_a = models.DateTimeField(null=True)


class EntityB(models.Model):
    name_b = models.CharField(max_length=128, null=True)
    dt_b = models.DateTimeField(null=True)

EntityA.objects.create(name_a=""a"")
EntityA.objects.create(name_a=""qwerty"", dt_a=timezone.now())
EntityB.objects.create(name_b=""random"", dt_b=timezone.now())
EntityB.objects.create(name_b=""b"")

qs_a = EntityA.objects.values(name=F(""name_a""), dt=F(""dt_a""))
qs_b = EntityB.objects.values(name=F(""name_b""), dt=F(""dt_b""))

# union queryset
queryset = qs_a.union(qs_b)
}}}
I can use a simple ORDER BY clause:
 
{{{
queryset.order_by(""-dt"")
}}}
And everything will work, no problem here.

What I actually want is the same query, but with a NULLS LAST
Usually the query becomes: 


{{{
queryset.order_by(F(""dt"").desc(nulls_last=True)) 
}}}

but that raises a 
{{{
DatabaseError: ORDER BY term does not match any column in the result set.
}}}

I know unions can handle only a few clauses,  but ORDER BY is one of them, so I'm unsure whether this is the expected behaviour or not. 
If it's expected, then the raised exception could be more explicit.
"	Bug	closed	Database layer (models, ORM)	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
