我在Django应用程序中有一个模型,看起来像这样
class Flight(models.Model):
code = models.CharField(max_length = 15, primary_key = True)
airline = models.ForeignKey(Airline)
departure_airport = models.ForeignKey(Airport, related_name='flight_departure')
departure_time = models.TimeField()
arriving_airport = models.ForeignKey(Airport, related_name='flight_arriving')
arriving_time = models.TimeField()
aircraft = models.ForeignKey(Aircraft)
我现在只想检索当前时间之后离开的航班。为此,我在控制台上尝试了以下内容:
from datetime import *
time = datetime.time(datetime.now())
f = Flight.objects.filter(departure_time > time)
运行前面的语句后,我收到以下错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'departure_time' is not defined
另外,如果我尝试以下操作,我也会收到类似的错误:
f = Flight.objects.filter(departure_time > '12:00:00')
然而,这有效:
f = Flight.objects.filter(departure_time = '12:00:00')
print f
[<Flight: LH17>]
如果有人能就如何在TimeField字段上比较(查询)次数提供建议,我将非常感激吗?
感谢。
答案 0 :(得分:3)
你的问题不在于它是一个时间字段,你的问题是你没有给filter
字段查找。如果你试图在整数字段上进行那种查询,你会得到同样的错误。
Django查询不使用<
,>
或==
等Python比较运算符表示。相反,它们(通常)使用关键字语法表达,然后使用赋值运算符=
将值绑定到该语法。
您的查询应该是:
f = Flight.objects.filter(departure_time__gt=time)
https://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups有详细信息。