为什么不能按用户属性查询?

2024-10-02 00:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,存储实体与业主的电子邮件。我的型号.py看起来像这样:

from google.appengine.ext import db
from google.appengine.api import users

class GenericModel(db.Model):
    '''GenericModel is inherited by other model definitions.'''
    DateAdded = db.DateTimeProperty(auto_now_add = True)
    owner = db.UserProperty()

class CASentry(GenericModel):
    description = db.TextProperty()
    date = db.DateProperty()
    hours = db.FloatProperty()
    location = db.StringProperty()

当我从开发服务器上的交互式控制台运行此命令时:

from google.appengine.ext import db
t = db.GqlQuery('''SELECT * FROM CASentry''').fetch(1)[0]
print t.owner

t = db.GqlQuery('''SELECT * FROM CASentry where owner = 'test@example.com' ''').fetch(1)
print t

我明白了:

test@example.com
[]

我觉得应该是这样的:

test@example.com
[<models.CASentry object at 0x123456>]

有人看到我的代码有问题吗?你知道吗


Tags: fromtestimportcomdbexamplegoogleselect
2条回答

您可以在GQL中直接转换为用户:

SELECT * FROM CASentry where owner = USER('test@example.com')

您应该提供User,而不是字符串:

t = db.GqlQuery("SELECT * FROM CASentry where owner = :owner", owner=User(email="test@example.com")).fetch(1)

相关问题 更多 >

    热门问题