gpt4 book ai didi

python - 使用 ReferenceProperty 时如何查询数据存储?

转载 作者:行者123 更新时间:2023-11-28 22:06:05 25 4
gpt4 key购买 nike

我正在尝试了解数据存储中的一对多关系;但我无法理解当模型包含 ReferenceProperty 时如何查询和更新用户记录。假设我有这个模型:

class User(db.Model):
userEmail = db.StringProperty()
userScore = db.IntegerProperty(default=0)

class Comment(db.Model):
user = db.ReferenceProperty(User, collection_name="comments")
comment = db.StringProperty()

class Venue(db.Model):
user = db.ReferenceProperty(User, collection_name="venues")
venue = db.StringProperty()

如果我理解正确的话,由 userEmail 唯一标识的同一用户可以有很多评论,并且可能与许多场所(餐馆等)相关联

现在,假设用户 az@example.com 已经在数据库中并且他提交了一个新条目。

Based on this answer我做类似的事情:

q = User.all()
q.filter("userEmail =", az@example.com)
results = q.fetch(1)
newEntry = results[0]

但我不清楚这是做什么的!我想要做的是更新 commentvenue 字段,它们位于 class Commentclass Venue 下。

你能帮我理解这是如何工作的吗?谢谢。

最佳答案

您发布的片段是这样做的(见评论):

q = User.all() # prepare User table for querying
q.filter("userEmail =", "az@example.com") # apply filter, email lookup
- this is a simple where clause
results = q.fetch(1) # execute the query, apply limit 1
the_user = results[0] # the results is a list of objects, grab the first one

在此代码之后,the_user 将是一个对象,对应于电子邮件为 "az@example.com" 的用户记录。设置完引用属性后,您可以使用 the_user.commentsthe_user.venues 访问其评论和地点。其中一些地方可以修改,像这样说:

some_venue = the_user.venues[0] # the first from the list
some_venue.venue = 'At DC. square'
db.put(some_venue) # the entry will be updated

我建议你大体浏览一下gae文档,里面有很好的例子,你会发现它很有帮助: http://code.google.com/appengine/docs/python/overview.html

** 更新**:要为用户添加新场所,只需创建新场所并将查询的用户对象分配为场所的用户属性:

new_venue = Venue(venue='Jeferson memorial', user=the_user) # careful with the quoting
db.put(new_venue)

关于python - 使用 ReferenceProperty 时如何查询数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com