Django ORM日期过滤无法按预期工作

时间:2015-07-27 01:09:20

标签: django postgresql django-models django-orm

我有以下Django模型:

button.setTitle("×", forState: .Normal)
button.setTitleColor(UIColor.blueColor(), forState: .Normal)
button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 28)

(我们需要单独的日期和时间字段)

在我的测试中,我创建了几个这样的ElectricityPriceConstraints实例(日期和时间各不相同):

result = {"MetaData": {}, "SRData": dResult}
print(json.dumps(result, sort_keys=True, indent=4))

然后是这段代码(我将在下面解释reading_datetime):

class ElectricityPriceConstraints(models.Model):
    start_date = models.DateField()
    end_date = models.DateField()
    start_time = models.TimeField()
    end_time = models.TimeField()

如果我使用以下代码运行上述代码:

ElectricityPriceConstraints.objects.create( start_date=datetime.date(2015, 3, 21), end_date=datetime.date(2015, 9, 21), start_time=datetime.time(2, 0, 0), end_time=datetime.time(5, 59, 59))

它会返回预期的结果但是如果我把这一天改为22,就像这样:

results = ElectricityPriceConstraints.objects.filter( start_time__lte=reading_datetime.time(), end_time__gte=reading_datetime.time(), start_date__lte=reading_datetime.date(), end_date__gte=reading_datetime.date())

我得到一个空的结果集,即使它应该返回1个结果。

让我发疯的是,当我为上述每种情况获取SQL代码(reading_datetime = datetime.datetime(2015, 9, 21, 21, 22, 12))并直接在PostgreSQL中运行(我的测试也在PostgreSQL上运行)时,都会返回预期的行结果。唯一的区别是SQL Django给我在日期周围没有引号,我必须添加它们才能手动运行查询但我不希望这是问题,因为我假设这只是表示差异以及执行的内容是正确的SQL。

有谁知道为什么会这样?

0 个答案:

没有答案