Skip to main content
 首页 » 编程设计

python之是否可以在 django 1.2.1 中将注释与 defer/only 结合使用

2025年05月04日23hnrainll

我有两个简单的模型:书籍和作者

每本书都有一个作者,通过外键链接。

一切正常,直到我尝试在注释上使用 defer/only:

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

有效。查询看起来像:

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 

非常简单 - 从作者那里选择所有内容,并另外选择书籍数量。

但是当我执行以下操作时,一切都变了:

simple=authors.defer('birthday') 

现在,简单的查询如下所示:

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 

它已经完全丢失了额外的信息。怎么回事?

请您参考如下方法:

好吧,这似乎是一个错误。已经有 a ticket ,但它已经有一段时间没有受到太多关注了。可能值得向 django-developers Google 小组发帖以插入事情进展。