我有一份年份清单。我想过滤属于特定年份的对象:
begYears = [2012, 2013, 2014]
#dateTime field's name is 'beginning_date'. This code does not work...
works = Work.objects.filter(beginning_date__year__in=begYears)
答案 0 :(得分:2)
肯定一个比这更好的解决方案(写一个呈现年份并使用它的属性?使用date()过滤器?),但我现在想不到它:
works = Work.objects.filter(
Q(beginning_date__year=2012)|
Q(beginning_date__year=2013)|
Q(beginning_date__year=2014)
)
答案 1 :(得分:1)
Django 1.6不支持嵌套查找,即年度不可能。在1.7中,支持嵌套查找,但是1.7中没有实现。它可能是1.8的补充。目前,Q-approach是要走的路。
答案 2 :(得分:0)
运行时生成过滤条件(begYears可能不是硬编码,但在现实生活中扣除):
begYears = [2012, 2013, 2014]
q = Q()
for begYear in begYears:
q.add(Q(beginning_date__year=begYear), Q.OR)
works = Work.objects.filter(q)