我有一个List类型和一个User类型。我目前正在使用IntegerProperty将用户ID与列表相关联,但我想切换到ReferenceProperty。目前,我正在使用此代码(使用IntegerProperty):
db.GqlQuery("SELECT * FROM List WHERE UserID = :1", userid)
ReferenceProperty的代码应该如何?该脚本的数字ID为User(userid)。
答案 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)