У меня есть эта модель:GAE хранилищу: фильтр по дате интервала
class Vehicle(db.Model):
...
start_production_date = db.DateProperty()
end_production_date = db.DateProperty()
Мне нужно фильтровать, например, все транспортные средства в производство, скажем, в 2010 году:
Я думал, что я мог бы сделать:
q = (Vehicle.all()
.filter('start_production_date >=', datetime(2010, 1, 1))
.filter('end_production_date <', datetime(2011, 1, 1)))
купить я BadFilterError
:
BadFilterError: invalid filter: Only one property per query may have inequality filters (<=, >=, <, >)..
так, как мне это получить? Более того, это мне кажется довольно общей задачей.
Извините, но это не решает проблему: как я фильтровать модели в производство в 2010 году? этот год ** между ** начало и конец. Например, есть модели, которые начали строиться в 2000 году и в 2012 году вышли из производства и т. Д. – neurino
@neurino вы можете создать эти списки вручную, а затем использовать оператор 'IN'. Например, если 'start_list = [2000, 2001, 2002, 2003, 2004]' и 'end_list = [2009, 20010, 20011, 20012, 2013]' вы можете использовать два фильтра: '.filter ('start_production_year IN' start_list) .filter ('end_production_year IN', end_list) ' – Lipis
@neurino Я не уверен, что вы можете найти что-нибудь лучше .. так как вам не разрешено использовать два оператора неравенства в одном и том же фильтре. – Lipis