【发布时间】:2016-09-02 05:06:48
【问题描述】:
我有搜索选项,用户从前端输入。
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)
我正在尝试根据日期字段进行过滤,并且也希望获得过滤后的记录。我尝试了同样的方法,但没有成功。我该如何继续?
任何帮助都会很棒!!!
我尝试了来自 SO 的其他问题:How can I filter a date of a DateTimeField in Django?
我无法解决我的问题,因为我们正在通过 1 传递列名。但现在我作为字典传递。
【问题讨论】:
-
“我尝试了同样的方法但没有成功” - 你尝试了什么?
-
试过 ORM result = Customer.objects.filter(**query)
-
请参阅Parsing a Datetime String into a Django DateTimeField。您需要将
datetime对象而不是日期字符串传递给查询。 -
试试
query_to_field_mapping = {"Date": "date__contains","Status": "result"}。很可能是因为您的日期时间字段包含包括时间在内的值,但是当您搜索时,您只提供了一个日期字符串(没有时间),因此2016-02-07(您的查询参数)不等于2016-02-07T12:32:22(一个可能的值在数据库中) -
@iulian 非常感谢。你节省了我的时间。请回答问题。我会标记为正确答案
标签: python django django-models django-queryset