Можно ли улучшить этот запрос Django? - PullRequest
3 голосов
/ 16 мая 2010

С учетом структуры модели, подобной этой:

class Book(models.Model):
    user = models.ForeignKey(User)

class Readingdate(models.Model):
    book = models.ForeignKey(Book)
    date = models.DateField()

Одна книга может иметь несколько Readingdate с.

Как мне перечислить книги, имеющие хотя бы одну Readingdate в течение определенного года?

Я могу сделать это:

from_date = datetime.date(2010,1,1)
to_date = datetime.date(2010,12,31)

book_ids = Readingdate.objects\
            .filter(date__range=(from_date,to_date))\
            .values_list('book_id', flat=True)

books_read_2010 = Book.objects.filter(id__in=book_ids)

Можно ли сделать это с one queryset, или это лучший способ?

1 Ответ

5 голосов
/ 16 мая 2010
Book.objects.filter(readingdate__date__year=2010)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...