我有以下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。
有谁知道为什么会这样?