我有一个已经填充了实体的数据存储区。但是,它们并没有被安排到实体组(例如,亲子关系)。我的实体种类是:
team = Team.get_by_key_name('Plants')
query = Plants.all()
plants
尚未分配给Plants
小组:
query = Plants.all().ancestor(team)
plants = query.fetch(50)
# This will result in an empty list
我想立即将它们分配给团队:
query = Plants.all()
plants = query.fetch(50)
for p in plants:
# This isn't right
p.parent = team
db.put(plants)
当我尝试根据ancestor
再次查询时:
query = Plants.all().ancestor(team)
plants = query.fetch(50)
# This still results in an empty list
问题:如何将父级分配给现有实体?
答案 0 :(得分:4)
根据我的经验,最简单的方法是创建一个复制了所有完全相同信息的新实体,并在这个新实体上适当地设置父实体。
这是因为父项成为实体键的一部分(因此您需要将任何现有父项传递给db.Key
或get_by_key_name
等,以使它们正常工作),因此它不可更改以你描述的方式(或至少,据我所知)。
编辑:
Xion提出了一个我忘记提及的好点。使用新对象替换上一个对象时,还必须处理可能指向旧对象的任何ReferenceProperty
和ListProperty(db.Key)
。我想这一天的教训是在放下任何数据之前更仔细地设计和思考实体组。