2013-06-11 3 views
0

У меня есть модель в приложении Django, который выглядит, как этотDjango - запрос на TimeField, как сравнивать раз?

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

Для тех, кто ищет дополнительную информацию, ознакомьтесь с этой [link] (https://docs.djangoproject.com/en/dev/ref/models/querysets/#id4) – Octavio

ответ

1

Ваша проблема не в том, что это поле времени, ваша проблема в том, что вы не даете filter поиск по полю. Вы получите такую ​​же ошибку, если бы пытались сделать такой запрос в целочисленном поле.

Запросы Django не выражаются с использованием операторов сравнения Python, таких как <, >, или ==. Вместо этого они (обычно) выражаются с использованием синтаксиса ключевых слов, с которым вы затем связываете значения с помощью оператора присваивания =.

Ваш запрос должен быть:

f = Flight.objects.filter(departure_time__gt=time) 

https://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups имеет полную информацию.

Смежные вопросы