date_one = form.cleaned_data.get('date_one')
date_two = form.cleaned_data.get('date_two')
date_type = form.cleaned_data.get('date_type')
search = MyClass.objects.filter(date_type__range(date_one, date_two))
我的模型有两个不同的日期列。 (created
和expires
)。用户可以在两个日期之间进行查询过滤,但可以选择是否要通过创建或到期进行过滤。
我可以使用if
进行两行查询,但是我真的很想知道如何按照我的询问方式进行查询。
我该怎么做?由于__range
之前的键是变量。我尝试使用(**{ filter: search_string })
,但似乎与__range
不兼容。
答案 0 :(得分:3)
尝试
unFavorites
答案 1 :(得分:1)
您尝试的事情几乎是正确的!
查询不是函数(因此不是foo__range(start, end)
),但它们是关键字参数:foo__range=(start, end)
所以您将拥有:
date_one = form.cleaned_data.get('date_one')
date_two = form.cleaned_data.get('date_two')
date_type = form.cleaned_data.get('date_type')
query_kwargs = {
"{}__range".format(date_type): (date_one, date_two)
}
search = MyClass.objects.filter(**query_kwargs)