Google app engine 在应用程序引擎数据存储中按用户电子邮件过滤记录?

Google app engine 在应用程序引擎数据存储中按用户电子邮件过滤记录?,google-app-engine,Google App Engine,我有一个应用程序托管在应用程序引擎上。它有一些字段以及UserProperty(),如下所示: class Post(db.Model): title = db.StringProperty(required=True) created_by = db.UserProperty(required=True) ...#some other fields 我正在尝试按字段created_筛选记录,这样应用程序将显示登录用户创建的记录。我试过: p = Post.all()

我有一个应用程序托管在应用程序引擎上。它有一些字段以及UserProperty(),如下所示:

class Post(db.Model):
    title = db.StringProperty(required=True)
    created_by = db.UserProperty(required=True)
    ...#some other fields
我正在尝试按字段created_筛选记录,这样应用程序将显示登录用户创建的记录。我试过:

p = Post.all()
p.filter('created_by =', users.get_current_user())

这是行不通的。请提供帮助。

如果您的登录用户没有单独的型号,您应该在帖子中同时存储
用户id
,而不是
电子邮件,因为前者更独特

只需在
Post

class Post(db.Model):
  title = db.StringProperty(required=True)
  created_by = db.UserProperty(required=True)
  user_id = db.StringProperty(required=True)
  ...
然后在
Post
创建中执行以下操作:

post_db = Post(title='Hello world', 
               created_by=users.get_current_user(), 
               user_id=users.get_current_user().user_id())
现在,如果您想显示登录用户发布的所有帖子,您应该:

p = Post.all()
p.filter('user_id =', users.get_current_user().user_id())

当你问一个问题时,你应该描述它是如何不起作用的,你是否得到了一个错误,没有结果,结果却不是你所期望的?说到这里,您已经使用数据存储查看器调查了UserProperty中存储的内容。我没有得到任何错误,但没有结果。在数据存储中,“创建人”列有用户的电子邮件id。顺便说一句,我在填充“创建人”字段时使用了“users.get_current_user()”。即使在发出-p.filter('created_by='')之后也没有结果(p.count()为0),请考虑切换到我刚刚发现的,created_by会保留用户实例,因为我在创建post时使用了'created_by=users.get_current_user()'。让我困惑的是数据存储查看器在created_by字段中显示用户的电子邮件id。我将通过存储额外字段来使用您的方法。但我不明白为什么用户id比电子邮件id更独特?@rajpy实际上在你的情况下是一样的,因为你在应用程序中没有以任何方式更改它。但一般来说,在应用程序中,实际用户的电子邮件可能会发生变化,因此,你永远不应该依赖电子邮件的唯一性。这只是一种坏习惯。。