申し訳ありませんが、そのためのルックアップはありません (__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]))