Python Django:如何使用Django中的DateTimeField DB过滤用户输入的日期,并将过滤选项作为字典传递?

Python Django:如何使用Django中的DateTimeField DB过滤用户输入的日期,并将过滤选项作为字典传递?,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,我有搜索选项,用户从前端输入 search = {"Date":"2016-02-07","Status":"pass" } 然后,我用DB中的列名映射这些值 query_to_field_mapping = {"Date": "date","Status": "result"} query = {query_to_field_mapping[key]: value for key, value in search.items()} 现在我有了数据库中的DateTimeField。当我使用

我有搜索选项,用户从前端输入

search = {"Date":"2016-02-07","Status":"pass" }
然后,我用DB中的列名映射这些值

query_to_field_mapping = {"Date": "date","Status": "result"}

query = {query_to_field_mapping[key]: value for key, value in search.items()}
现在我有了数据库中的DateTimeField。当我使用过滤器时,我尝试使用以下过滤器:

result = Customer.objects.filter(**query)

这里我试图根据日期字段进行筛选&我也想得到筛选后的记录。我尝试了同样的方法,但没有成功。我如何继续

任何帮助都会很棒

我试着问了另外一个问题:


我找不到解决问题的方法,因为我们正在以1乘1的方式传递列名。但现在我以字典的形式传递。您的方法是正确的。它不起作用的原因是,您通过提供一个
date
字符串来过滤
datetime
字段的相等性,因此
2016-02-07
日期(您的查询参数)不等于
2016-02-07T12:32:22
(数据库中的一个可能值)

要克服这种情况,请使用您自己问题链接中的一种现场查找方法。作为一个具体示例,让我们使用
包含
字段查找,如下所示:

query_to_field_mapping = {"Date": "date__contains","Status": "result"}

因此,当将
query\u to_字段\u映射传递到
.filter()
时,它将在您需要的日期时间内查找日期。

“我尝试了相同的方法,但没有成功”-您尝试了什么?尝试了ORM结果=Customer.objects.filter(**query)请参阅。您需要向查询传递
datetime
对象,而不是日期字符串。请尝试
query\u to\u field\u mapping={“date”:“date\u contains”,“Status”:“result”}
。很可能是因为您的DateTime字段包含包括时间在内的值,但是当您搜索时,您只提供了一个日期字符串(没有时间),因此
2016-02-07
(您的查询参数)不等于
2016-02-07T12:32:22
(数据库中的一个可能值)@iulian非常感谢。你节省了我的时间。请回答这个问题。我会记为正确答案