Используя следующие модели django:
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class Book(models.Model):
name = models.CharField(max_length=300)
author = models.ForeignKey(Author)
pubdate = models.DateField()
class Meta:
ordering = ('-pubdate')
Как я могу получить пять последних книг, опубликованных каждым автором ?
Я рассмотрел повторение каждого автора иполучить книги, изданные автором, нарезая их до 5.
for a in Author.objects.all():
books = Book.objects.filter(author = a )[:5]
print books #and/or process the entries...
Но, если в таблицах много записей (возможно, тысяч книг), это может быть медленным и неэффективным.
ТакЕсть ли другой способ сделать это с помощью Django (или SQL-запрос)?