Запрос Python: как отсортировать переменную, отличную от фильтра - PullRequest
0 голосов
/ 30 октября 2011

У меня есть сайт событий с запросом, который должен выбрать все события, которые происходят сегодня или позже. Проблема в том, что некоторые события занимают более 1 дня, поэтому я хочу, чтобы запрос выполнял «выбрать все события с конечной датой (till_date) равной или более поздней, чем сегодня, и отсортировать их по начальной дате (from_date)».

К сожалению, когда я делаю это, я получаю сообщение об ошибке: «Первое свойство упорядочения должно совпадать со свойством фильтра неравенства, если оно задано для этого запроса; получено из_даты, ожидается до_даты». Однако сортировка по параметру till_date дает плохой результат.

В настоящее время я запускаю код, как показано ниже, но это означает, что событие, которое началось вчера и заканчивается завтра, не отображается в списке. Есть ли способ обойти это?

Лучший, Винсент

class Event(db.Model):
    author = db.StringProperty()
    email = db.EmailProperty()
    title = db.StringProperty()
    url = db.LinkProperty()
    in_city = db.StringProperty()
    in_country = db.StringProperty()
    from_date = db.DateProperty()
    until_date = db.DateProperty()
    register_date = db.DateTimeProperty(auto_now_add=True)

class EventsHandler(webapp.RequestHandler):
    def get(self):
        events = Event.all()
        events.filter("from_date >=", datetime.date.today())
        events.order("from_date")
        template_values = {
            'events': events,
        }
        self.response.out.write(template.render('templates/events.html', template_values))

1 Ответ

0 голосов
/ 01 ноября 2011

Как указывает исключение, это невозможно сделать.Вам следует либо выполнить запрос по каждому дню, отсортировать по дате начала (используя DateProperty, чтобы вы могли выполнить фильтр равенства по дате окончания), либо выполнить запрос без сортировки и отсортировать результаты в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...