您好我有一个用户输入表格,其格式为2011-05-12
格式。我想使用Q
查询结果。但我的数据库字段采用日期时间格式,如2011-05-18 08:36:34
。我正在给出这样的查询
k = Posts.objects.filter(Q(review_email__contains = user), review_time = datetime(date))
其中user
是一些用户名,date
是表单inputvalue
如果我执行上述查询,我将收到以下错误
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: 'module' object is not callable
有人可以帮助我解决这个问题。提前致谢
答案 0 :(得分:7)
错误来自于不执行datetime.datetime
,但是一旦解决了这个问题,您的查询就会遇到错误的结果。当您将datetime.date
强制转换为datetime.datetime
对象时,它将在午夜。因此,只有当天午夜创建的Posts
才会匹配。
你应该这样做:
Post.objects.filter(
review_email__contains = user,
review_time__year=date.year,
review_time__day=date.day,
review_time__month=date.month,
)
有关详细信息,请参阅queryset reference。
另外,您不需要在此使用Q
对象。
答案 1 :(得分:0)
正如错误所示, 'module'
对象不可调用。 datetime
是一个模块。你想要的是datetime.datetime
。
使用:
k = Posts.objects.filter(Q(review_email__contains = user), review_time = datetime.datetime(date))
答案 2 :(得分:0)
如果您只想比较日期,可以试试这个
k = Posts.objects.filter(Q(review_email__contains = user),review_time__date = datetime(date).date())