Django:如何在 Django 中使用 DateTimeField 数据库过滤用户输入日期,将过滤选项作为字典传递?
Django: How can I filter a user input date with a DateTimeField DB in Django passing the filter options as dictionary?
我有用户从前端输入的搜索选项。
search = {"Date":"2016-02-07","Status":"pass" }
然后我将这些值与数据库中的列名进行映射。
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)
我正在尝试根据日期字段进行过滤,并且还想获取过滤后的记录。我尝试了同样的方法但没有成功。我该如何继续?
任何帮助都会很棒!!!
我尝试了 SO 的其他一些问题:How can I filter a date of a DateTimeField in Django?
我无法找到解决问题的方法,因为我们正在 1 乘 1 地传递列名。但现在我正在作为字典传递。
您的方法是正确的。它不起作用的原因是因为您通过提供 date
字符串来过滤 datetime
字段的相等性,因此 2016-02-07
日期(您的查询参数)不等于 2016-02-07T12:32:22
(数据库中的可能值)。
要克服这种情况,请使用您自己问题的 link 中的一种字段查找可能性。作为具体示例,让我们使用 contains
字段查找,如下所示:
query_to_field_mapping = {"Date": "date__contains","Status": "result"}
因此,当将 query_to_field_mapping
传递给 .filter()
时,它将在您需要的日期时间内查找日期。
我有用户从前端输入的搜索选项。
search = {"Date":"2016-02-07","Status":"pass" }
然后我将这些值与数据库中的列名进行映射。
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)
我正在尝试根据日期字段进行过滤,并且还想获取过滤后的记录。我尝试了同样的方法但没有成功。我该如何继续?
任何帮助都会很棒!!!
我尝试了 SO 的其他一些问题:How can I filter a date of a DateTimeField in Django?
我无法找到解决问题的方法,因为我们正在 1 乘 1 地传递列名。但现在我正在作为字典传递。
您的方法是正确的。它不起作用的原因是因为您通过提供 date
字符串来过滤 datetime
字段的相等性,因此 2016-02-07
日期(您的查询参数)不等于 2016-02-07T12:32:22
(数据库中的可能值)。
要克服这种情况,请使用您自己问题的 link 中的一种字段查找可能性。作为具体示例,让我们使用 contains
字段查找,如下所示:
query_to_field_mapping = {"Date": "date__contains","Status": "result"}
因此,当将 query_to_field_mapping
传递给 .filter()
时,它将在您需要的日期时间内查找日期。