给定这样的模型结构:
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)
是否可以使用一个查询集来做到这一点,或者这是最好的方法吗?
最佳答案
Book.objects.filter(readingdate__date__year=2010)
关于python - 这个 Django 查询可以改进吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843613/