Opened 2 days ago

Last modified 12 hours ago

#36155 closed Cleanup/optimization

Improve error handling when complex annotations are not passed an alias — at Initial Version

Reported by: Vinko Mlacic Owned by: Vinko Mlacic
Component: Database layer (models, ORM) Version: dev
Severity: Normal Keywords:
Cc: Vinko Mlacic Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When complex annotations are not passed an alias, the default alias is usually used. If the annotate arg does not define the default alias, an error saying "Complex annotations require an alias" is raised.

This works fine with args that are subclasses of Aggregate subclass because the default_alias property on the Aggregate subclass raises that same TypeError.

However, when using expressions that are not Aggregate subclasses, this fails with an obscure message saying that default_alias is not a property on the expression object.

Code to reproduce:

models.py:

class Book(models.Model):
    name = models.CharField(max_length=255)

tests.py:

Book.objects.annotate(Value("title"))

Similar happens with other non Aggregate types like: F, Case - When, Subquery, Exists, ...

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top