python - 这个 Django 查询可以改进吗?

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

是否可以使用一个查询集来做到这一点,或者这是最好的方法吗?

最佳答案

Book.objects.filter(readingdate__date__year=2010)

关于python - 这个 Django 查询可以改进吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843613/

相关文章:

django.core.cache.backends.base.InvalidCacheBackendError : Could not find backend 'django_redis.cache.RedisCache' : cannot import name 'six'

python - 如何在 Django 过滤器中使用 AND?

python - 两个表之间的onetoone数据库关系?

python - 无法使用 PyViz 示例中的面板保存 Bokeh 图

python - 如何在Python中的一个变量中同时以读取和追加模式打开文件?

python - 1970 年具有 time_start 属性的 Celery 任务

python - 指定 numpy.datype 来读取 GPX 轨迹点

python - 正确格式化 pygal 中的数字

Django Rest Framework 序列化器 create() 不会被触发

python - 如何查询django的继承模型?