如何过滤多个月的对象?
我试过这个东西,但没有运气
Sample.objects.filter(date__year=2013,
date__month__in=[2, 7, 9, 12])
好像我尝试多个 ID 的以下将起作用
Sample.objects.filter(id__in=[1,4,8])
如何在 django 查询中过滤多个月的记录?
如何过滤多个月的对象?
我试过这个东西,但没有运气
Sample.objects.filter(date__year=2013,
date__month__in=[2, 7, 9, 12])
好像我尝试多个 ID 的以下将起作用
Sample.objects.filter(id__in=[1,4,8])
如何在 django 查询中过滤多个月的记录?
抱歉,没有查找(__month
已经是查找,您无法链接它们),但您可以使用Q
对象执行此操作:
from django.db.models import Q
def month_in(months, field='date'):
q = Q()
for m in months:
q |= Q(**{field + '__month': m})
return q
Sample.objects.filter(month_in([2, 7, 9, 12]), date__year=2013)
或者可能会带来年份:
def month_in(year, months, field='date'):
q = Q(**{field + '__year': year})
for m in months:
q |= Q(**{field + '__month': m})
return q
Sample.objects.filter(month_in(2013, [2, 7, 9, 12]))
然后你可以做类似的事情
Sample.objects.filter(month_in(2013, [2, 7, 9, 12]) | month_in(2012, [9, 11]))