我创建了一个像这样的实体:
company = dbDatafile(usOwner = user)
company.name = self.request.get("name")
company.put()
其中user是Google用户帐户。现在,当我尝试搜索该用户时:
datafiles = dbDatafile.gql("WHERE usOwner = '%s'" % user.user_id())
分配给jinja2模板var:
template_values = {
'datafiles': datafiles
}
并输出到html:
{% for datafile in datafiles %}
>>>{{ datafile.name }} chevrons to indicate any looping
{% endfor %}
我没有输出。
数据存在于管理信息中心,但我无法访问它。有什么想法吗?
由于
答案 0 :(得分:5)
如果usOwner
是UserProperty,则需要在GQL中使用USER()
:
datafiles = dbDatafile.gql("WHERE usOwner = USER(:1)", user.email())
还记得总是使用占位符,而不是字符串插值 - 只是因为它不是SQL,并不意味着它不易受到注入。
答案 1 :(得分:0)
好的,这不是严格回答我的问题,而是一个轻微的解决方法。我决定使用父功能,所以我的代码现在看起来像这样:
company = dbDatafile(parent=db.Key.from_path('user', user.user_id()))
company.name = self.request.get("name")
company.usOwner = user
company.put()
datafiles = dbDatafile.gql("WHERE ancestor IS '%s'" % db.Key.from_path('user', user.user_id()))
不确定这是否理想,但它可以正常工作并与High Replication数据存储区兼容。