google-app-engine: запрос свойства String в Model не возвращает результат - PullRequest
2 голосов
/ 22 января 2012

У меня есть модель, представленная как

class Suggestion(db.Model):
    text = db.TextProperty()
    votes = db.IntegerProperty()
    time_added = db.DateTimeProperty(auto_now_add=True)
    time_modified = db.DateTimeProperty(auto_now=True)

и я добавил предложение как

suggestion = Suggestion(text='Adding Suggestion', votes=1)
suggestion.put()

Я вижу, что это значение вставлено, теперь я хочу получить это предложение, запросив свойство text. Я сделал следующее

from models import Suggestion
suggestion = Suggestion.all().filter('text = ', 'Adding Suggestion').fetch(1)[0]
print suggestion

Результат пуст. Как я могу заставить этот запрос работать?

Спасибо

1 Ответ

3 голосов
/ 22 января 2012

Это связано с тем, что свойство text нельзя использовать в фильтрах. http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#TextProperty

В отличие от StringProperty, значение TextProperty может быть больше 500 персонажи длинные. Однако значения TextProperty не индексируются, и нельзя использовать в фильтрах или в порядках сортировки

Есть несколько альтернативных способов сделать это.

  1. Если «текст» короче 500 символов, то вы можете использовать StringProperty. StringProperty можно использовать в фильтре.
  2. Попробуйте сторонний подход к полнотекстовому поиску для Google App Engine. http://code.google.com/p/guestbook-example-appengine-full-text-search/
  3. Команда разработчиков приложений работает над обеспечением функции полнотекстового поиска в ближайшем будущем. http://googleappengine.blogspot.com/2012/01/happy-birthday-high-replication.html

Редактировать

полный текст Functin разработан командой Google App Engine: https://developers.google.com/appengine/docs/python/search/overview

...