基本上我有两个日期时间,每个模型一个。根据 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。
请您参考如下方法:
尝试查看自己生成表的 SQL。根据对您问题的评论,听起来 SQLite 正在使用不同的数据类型来存储空数据和非空数据,这会导致格式错误。
