Как это? (Кроме медленного.)
counts= [ (c, Item.filter( category=c.id ).count()) for c in Category.objects.all() ]
Это имеет преимущество того, чтобы быть коротким, даже если это действительно выбирает много строк.
<час>Редактирование.
одна версия запроса. BTW, это часто быстрее , чем ИЗБРАННОЕ КОЛИЧЕСТВО (*) в базе данных. Попробуйте его для наблюдения.
counts = defaultdict(int)
for i in Item.objects.all():
counts[i.category] += 1
Я прочитал книгу О'Рейли Enterprise JavaBeans 3.0 . Он охватывает почти всю спецификацию EJB3 и очень хорошо написан. Книга состоит из двух частей: первая часть (большая часть книги) посвящена ядру EJB3, поскольку это применимо к любой реализации или серверу приложений. Вторая часть представляет собой «учебное пособие» о том, как на самом деле реализовать различные биты в JBoss.