Django错误地查询日期时间?

时间:2011-01-05 00:13:48

标签: python django datetime

基本上我有两个日期时间,每个模型一个。根据python,日期时间是相等的。当我尝试使用另一个日期时查询一种类型的对象时,不会返回任何结果。但是当我尝试反向并在第一个日期时间查询另一个时,会返回一个结果。下面的例子应该澄清出了什么问题。

我的模型看起来像这样(缩写):

class Shift(models.Model):
    normalized_start = models.DateTimeField(null=True)

class ScheduledShift(models.Model):
    start_datetime = models.DateTimeField()

不返回结果的意外行为:

>>> shift = m.Shift.objects.get(pk=796)
>>> scheduled_shift = m.ScheduledShift.objects.get(pk=1)
>>> shift.normalized_start == scheduled_shift.start_datetime
True
>>> shift.normalized_start, scheduled_shift.start_datetime
(datetime.datetime(2011, 1, 4, 23, 15), datetime.datetime(2011, 1, 4, 23, 15))
>>> m.ScheduledShift.objects.filter(start_datetime=shift.normalized_start)
[]

然而,当我查询其他模型时(这是上一个例子中应该发生的事情)......

>>> m.Shift.objects.filter(normalized_start=scheduled_shift.start_datetime)
[<Shift 796>]

如果它有任何不同,我正在使用SQLite。

1 个答案:

答案 0 :(得分:0)

尝试查看生成表本身的SQL。基于对您的问题的评论,听起来SQLite使用不同的数据类型来存储null与非null数据,这导致格式错误。