google-app-engine:在Model中查询String属性不会检索结果

时间:2012-01-22 00:13:37

标签: google-app-engine gql

我的模型表示为

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 个答案:

答案 0 :(得分:3)

这是由于text属性无法在过滤器中使用。 http://code.google.com/appengine/docs/python/datastore/typesandpropertyclasses.html#TextProperty

  

与StringProperty不同,TextProperty值可以超过500   长字符。但是,TextProperty值未编入索引,并且   不能用于过滤器或排序订单

有一些替代方法可以这样做。

  1. 如果“text”短于500个字符,则可以使用StringProperty。 StringProperty可用于过滤器。
  2. 尝试使用谷歌应用引擎的第三方全文搜索方法。 http://code.google.com/p/guestbook-example-appengine-full-text-search/
  3. App Engine团队正在努力在不久的将来提供全文搜索功能。 http://googleappengine.blogspot.com/2012/01/happy-birthday-high-replication.html
  4. 修改

    全文功能是由谷歌应用引擎团队开发的: https://developers.google.com/appengine/docs/python/search/overview