【发布时间】:2014-12-13 14:06:58
【问题描述】:
我正在尝试按日期时间过滤我的查询。此日期时间是客户想要了解其信息的值范围的日期时间。我正在尝试将其设置为客户选择的月份的第一天。我通过月份数字将其转换为正确的字符串格式,然后转换为日期时间对象,因为仅查找字符串对象没有返回任何值,并且 Django 的文档说您需要这样做:
pub_date__gte=datetime(2005, 1, 30)
代码:
if 'billing-report' in request.POST:
customer_id = int(post_data['selected_customer'])
这是我用来获取所选客户日期并将其转换为元组的代码
if 'billing-report' in request.POST:
customer_id = int(post_data['selected_customer'])
selected_date = int(post_data['month'])
if selected_date < 10:
selected_date = '0'+str(selected_date)
year = datetime.now()
year = year.year
query_date = str(year) + '-' + str(selected_date) + '-01'
query_date_filter = datetime.strptime(query_date, "%Y-%m-%d")
compute_usages = ComputeUsages.objects.filter(customer_id = customer_id).filter(values_date = query_date_filter)
django debug shows: datetime.datetime(2014, 10, 1, 0, 0)
query_date looks like: 2014-07-01 before it is converted
.
没有错误但没有返回数据
我以前用过:
compute_usages = ComputeUsages.objects.filter(customer_id = customer_id).filter(values_date = datetime(query_date_filter))
这是导致错误的原因。很抱歉随着问题的发展而改变了我的问题,这就是为什么我要重新包含我之前所做的事情,以便让 cmets 有意义。
【问题讨论】:
-
datetime(..)不是元组,例如,len()不起作用;它是datetime类的实例,例如由datetime.strptime()类方法返回。尝试将datetime实例传递给datetime()会产生“无效整数”错误:TypeError: an integer is required (got type datetime.datetime) -
谢谢@J.F.Sebastian 我只是在尝试这种方式,因为以另一种方式传递它是行不通的。我恢复了原来的方式。但是仍然没有返回任何数据。
-
可能存在多个问题。修复一个,不一定修复所有。不要以这样的方式更改您的问题,以至于@Daniel Roseman 提供的现有答案不再有意义。
-
@J.F.Sebastian 抱歉,我只是想将其更新为最准确的。我道歉
-
顺便说一句,您不需要将整数转换为字符串,只需将它们转换为日期时间;你可以直接传递整数:
datetime(year, month, day)
标签: python django datetime django-views