基本上我有两个日期时间,每个模型一个。根据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。
答案 0 :(得分:0)
尝试查看生成表本身的SQL。基于对您的问题的评论,听起来SQLite使用不同的数据类型来存储null与非null数据,这导致格式错误。