日期时间值不正确:'%2014-08-08%'对于列" added_on'在第1行

时间:2014-08-14 06:46:21

标签: python django django-models

我尝试按照以下日期过滤DateTimeField

import datetime  

product_list.filter(added_on__contains=datetime.date(2014, 8, 8))

这会抛出警告

Warning at /specs/filter/
Incorrect datetime value: '%2014-08-08%' for column 'added_on' at row 1

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

contains适用于django模型的文本输入(字符串类型),因此在datetime字段中使用contains会导致抛出错误。所以你必须像:

那样过滤
product_list.filter(added_on=datetime.datetime(2014, 8, 8, 16, 12, 30))

或类似product_list.filter(last_updated__gte=datetime.date(2014,7,8)).filter(last_updated__lte=datetime.date(2014,7,10))

答案 1 :(得分:0)

有很多方法可以让我想到这一点。

  1. 您可以使用__range过滤器获得创意,并使用从当天开始到当天结束的日期时间对象。
  2. 使用gtelte
  3. 我个人使用的是一系列日期过滤器,从最细微到最少,因为我喜欢乍看之下能够理解我的代码:
  4.   

    product_list.filter(added_on__year = 2014).filter(added_on__month = 8).filter(added_on__day = 8)

    让django进行优化。