Hello Haki,
This should probably have been posted to the django-users list given this one
is for the development of Django itself but since there has been some recent and ungoing
development in this area I'll reply here.
First there has been work to reuse annotation aliases that is in the master branch but
haven't been released yet[0]. I'm pretty sure it would reuse the "reconciled" alias in your
case but if it doesn't I'd encourage you to submit an optimization ticket to make it so.
Secondly there's an active PR to allow expressions resolving to a boolean field to be
directly passed to .filter()[1]. That would allow you to pass your Exists expression
directly to filter() instead of annotating it first and thus avoid the double evaluation
issue you are experiencing.
Finally there's an accepted feature request for adding an alias() method that would
work how you'd expect `annotate(foo).defer('foo')` to do[2]. Maybe annotate().defer()
is more intuitive than adding yet another method.
Unfortunately I can't think of another of way of performing a single EXISTS() using
any of the currently released versions of Django.
Cheers,
Simon