这个Django查询可以改进吗?

时间:2010-05-16 11:58:26

标签: python 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)

是否可以使用一个查询集执行此操作,或者这是最好的方法?

1 个答案:

答案 0 :(得分:5)

Book.objects.filter(readingdate__date__year=2010)