ReferenceProperty过滤器

时间:2011-07-22 13:39:57

标签: python google-app-engine

我有一个List类型和一个User类型。我目前正在使用IntegerProperty将用户ID与列表相关联,但我想切换到ReferenceProperty。目前,我正在使用此代码(使用IntegerProperty):

db.GqlQuery("SELECT * FROM List WHERE UserID = :1", userid)

ReferenceProperty的代码应该如何?该脚本的数字ID为User(userid)。

2 个答案:

答案 0 :(得分:3)

首先,您需要从您的ID构建一个密钥。您可以这样做(假设您的用户实体没有父级):

user_key = db.Key.from_path('UserInfo', user_id)

现在,您可以像查询其他任何内容一样在查询中使用它:

db.GqlQuery("SELECT * FROM List WHERE user_key = :1", user_key)

或者等同于Query而不是GQL:

List.all().filter("user_key =", user_key)

答案 1 :(得分:1)

使用ReferenceProperty,您需要一个实际的实体供它参考。所以代码基本上是相同的,除了userid不是int,它将是一个实体(或者我认为实体的密钥在这种情况下可以工作)。如果您正在尝试切换到ReferenceProperty,我假设您要开始在List中使用User实体而不是用户ID,那么它看起来就像......

user = User.all()[0] # or some other thing to get your user
db.GqlQuery("SELECT * FROM List WHERE user = :1", user)