Можно ли использовать оператор GQL IN для поиска объектов, у которых есть элемент в списке? - PullRequest
0 голосов
/ 05 августа 2011

Я имею в виду, если у вас есть модель, такая же, как эта (Python)

class MahModel(db.Model):

, которая имеет свойство тегов (например)

    tags = db.StringListProperty()

Могу ли я сделать что-то вродеэто в запросе?WHERE 'x' IN tags

Если нет, какой обходной путь я могу использовать?

Мой настоящий код выглядит следующим образом:
Ad.gql ("ГДЕ оплачено = Истина И доставлено = Ложь И'"+ cat +"' INBORDS ORDER BY date ASC LIMIT 1 "). get ()

board - это список, в котором я хочу получить совпадение с переменной cat

Thatдает мне эту ошибку:
ad_ = Ad.gql("WHERE paid = True AND delivered = False AND '" + cat + "' IN boards ORDER BY date ASC LIMIT 1").get()<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\db\__init__.py", line 1208, in gql<br> *args, **kwds)<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\db\__init__.py", line 2296, in __init__<br> self._proto_query = gql.GQL(query_string, _app=app, namespace=namespace)<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 195, in __init__<br> if not self.__Select():<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 813, in __Select<br> return self.__From()<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 834, in __From<br> return self.__Where()<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 846, in __Where<br> return self.__FilterList()<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 871, in __FilterList<br> return self.__FilterList()<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 871, in __FilterList<br> return self.__FilterList()<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 853, in __FilterList<br> self.__Error('Invalid WHERE Identifier')<br> File "C:\Programme\Google\google_appengine\google\appengine\ext\gql\__init__.py", line 738, in __Error<br> (error_message, self.__symbols[self.__next_symbol]))<br> BadQueryError: Parse Error: Invalid WHERE Identifier at symbol 'tf2'

1 Ответ

1 голос
/ 05 августа 2011
WHERE tags = 'x'

вернет любые объекты, которые имеют 'x' хотя бы один раз в списке.

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