2010-08-13 5 views
2

J'ai deux modèles simples: Livre et AuteurEst-il possible de combiner des annotations avec report/uniquement dans django 1.2.1?

Chaque livre a un auteur, lié par une clé étrangère.

Les choses fonctionnent normalement jusqu'à ce que j'essaie d'utiliser defer/uniquement sur une annotation:

authors=Author.objects.all().annotate(bookcount=Count('books')) 

qui fonctionne. La requête ressemble à:

select table_author.name, table_author.birthday, COUNT(table_book.id) as bookcount 
from table_book left outer join table_author on table_author.id=table_book.author_id 
group by table_author.id 

donc très simple - tout sélectionner de l'auteur, et en outre sélectionner un nombre de livres.

Mais quand je fais ce qui suit, tout change:

simple=authors.defer('birthday') 

maintenant, la simple requête ressemble à ceci:

select COUNT(table_book.id) as bookcount from table_book left outer join 
table_author on table_author.id=table_book.author_id group by table_author.id 

et il a complètement perdu les informations supplémentaires. Quel est le problème?

+0

+1 pour un bug Django! – katrielalex

Répondre

1

Eh bien, cela semble être un bug. Il y a déjà a ticket, mais il n'a pas eu beaucoup d'attention depuis un moment. Cela pourrait valoir la peine de faire un post au groupe Google django-développeurs pour chiver les choses.