Google app engine 在应用程序引擎数据存储中按用户电子邮件过滤记录?
我有一个应用程序托管在应用程序引擎上。它有一些字段以及UserProperty(),如下所示: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()
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实际上在你的情况下是一样的,因为你在应用程序中没有以任何方式更改它。但一般来说,在应用程序中,实际用户的电子邮件可能会发生变化,因此,你永远不应该依赖电子邮件的唯一性。这只是一种坏习惯。。