У меня есть модель, которая выглядит следующим образом:После внешних ключей в Django
class Shelf(models.Model):
name = models.CharField(max_length=20)
class Book(models.Model):
shelf = models.ForeignKey(Shelf)
name = models.CharField(max_length=20)
class Page(models.Model):
book = models.ForeignKey(Book)
name = models.CharField(max_length=20)
и я хотел бы получить список полка с резюме о том, что они содержат:
Shelf | Books | Pages
------------------------
Home | 12 | 2000
Office | 8 | 1300
Я могу легко подсчитать количество книг с book_set.count
, но это, похоже, не распространяется дальше (мышление book_set.page_set.count
). Что-то вроде sum([p.page_set().count for p in book_set.all()])
работает, но очень медленно.
Есть ли хороший способ достичь этого, или я вынужден генерировать нечасто и кэшировать эту информацию?