﻿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
37305	Annotation aliases can shadow lookups and transforms	Annabelle Wiegart		".annotate() raises a ValueError when an annotation alias conflicts with a field on the annotated model. However, this is not the case for legitimate lookups and transforms, as demonstrated in this [https://dryorm.xterm.info/shadowing-lookups-transforms DryORM fiddle].

Here is the reproducer:

{{{#!div style=""font-size: 80%""
  {{{#!python
  from django.db import models
from django.db.models.expressions import Value
from django.contrib.auth.models import User


class Person(models.Model):
    name = models.CharField(max_length=100)
    creator = models.ForeignKey(User, models.CASCADE, null=True)
    creation_date = models.DateField(auto_now=True)

def run():
    admin = User.objects.create(username=""admin"")
    Person.objects.create(creator=admin, name=""Violet"")
    qs1 = Person.objects.all()
    qs2 = Person.objects.annotate(creator__username=Value(1))
    qs3 = Person.objects.annotate(creation_date__year=Value(1))
    # raises ValueError
    # qs4 = Person.objects.annotate(creator=Value(1))
    # qs5 = Person.objects.annotate(creation_date=Value(1))

    # lookup without shadowing
    print(qs1.values(""creator__username""))
    # lookup with shadowing
    print(qs2.values(""creator__username""))
    # transform without shadowing
    print(qs1.values(""creation_date__year""))
    # transform with shadowing
    print(qs3.values(""creation_date__year""))
  }}}
}}}

Output:

{{{#!div style=""font-size: 80%""
  {{{#!python
<QuerySet [{'creator__username': 'admin'}]>
<QuerySet [{'creator__username': 1}]>
<QuerySet [{'creation_date__year': 2026}]>
<QuerySet [{'creation_date__year': 1}]>
  }}}
}}}

The bug was discussed in [https://github.com/django/django/pull/21803#discussion_r3823261022 PR21803] for #36945."	Bug	new	Database layer (models, ORM)	6.1	Normal		annotate, alias	Annabelle Wiegart	Unreviewed	0	0	0	0	0	0
