2010-05-16 88 views
3

給定的模型結構是這樣的:可以改進此Django查詢嗎?

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) 

是否有可能與一個查詢集要做到這一點,或者這是最好的辦法嗎?

回答

5
Book.objects.filter(readingdate__date__year=2010)