Unfortunately annotation names can contain LOOKUP_SEP - that is the reason why the ugly refs_aggregate method was added.

For example qs.annotate(Max('id')) will create an annotation named max__id, and that can't be referred if the code checks for len(field_list) == 1.