我开始使用Google App Engine,我想制作像twitter这样的东西。
class User(db.Model):
account = db.StringProperty()
password = db.StringProperty()
name = db.StringProperty()
class Message(db.Model):
user = db.ReferenceProperty()
text = StringProperty()
created = DateTimeProperty(auto_now=True)
如何获取特定人的推文? 我试试
que = db.Query(Message).order('-created').filter("user['account'] = ",'Tom')
但这是错误的。 我可以访问用户属性吗?
答案 0 :(得分:6)
没有GQL JOIN
操作。查看modeling relationships上有关您可以使用的其他技术的文章。此外,请务必观看Building Scalable, Complex Apps on App Engine,这非常值得您花时间。
使用当前模型,您需要获取用户实体(或构建其密钥!),然后使用该实体进行查询。例如:
user = User.all(keys_only=True).filter('account', 'Tom').get() # only get one.
# or, build the key (if possible)
user = db.Key.from_path('User', 'tom') # if you make 'account' the key_name
messages = Message.all().order('-created').filter("user =", user)
另一种选择是对设备进行去模糊处理并在邮件上存储“帐户”:
class Message(db.Model):
user = db.ReferenceProperty()
account = StringProperty()
text = StringProperty()
created = DateTimeProperty(auto_now=True)
messages = Message.all().order('-created').filter("account =", 'tom')
答案 1 :(得分:0)
Robert Kluin说的是对的。我也在你的模型中看到了这一点。
user = db.ReferenceProperty()
我认为它应该是user=db.ReferenceProperty(User)