AppEngine: запрашивает хранилище данных для записей без условий для определенного свойства - PullRequest
1 голос
/ 05 октября 2010

Я хочу сделать запрос, чтобы пользователь мог или не мог выбрать фильтр, но я не хочу создавать 2 индекса (таблицы).

value=self.request.get('filter')
if value:
    results=Entity.all().filter('p1 =','v1').filter('p2 =','v2').filter('filter_property =',value)
else:
    results=Entity.all().filter('p1 =','v1').filter('p2 =','v2')

Я мог бы заказать filter_property.например, в последней строке:

    results=Entity.all().filter('p1 =','v1').filter('p2 =','v2').order('filter_property')

было бы плохо, если бы я мог или не мог фильтровать p1 (property1) и p2 (property2).я хотел бы сделать что-то вроде:

value = self.request.get('filter')
if value:
    operator = '='
else:
    operator = '!='
results=Entity.all().filter('p1 =','v1').filter('p2 =','v2').filter('filter_property '+operator,value).order('p4')

". order ('p4')" потерпит неудачу BadArgumentError с операндом!делать?

1 Ответ

0 голосов
/ 05 октября 2010

Звучит так, будто вы хорошо разбираетесь в альтернативах. Вы можете добавить предложения порядка для замены фильтров, если хотите, чтобы хранилище данных использовало одинаковый индекс для каждого; в противном случае вы застряли с несколькими индексами.

...