正在为用户设计饲料系统。
所以我有:
class User(db.Model):
name = db.StringProperty()
list_of_keys = db.StringListProperty()
class Feed(db.Model):
event = db.StringProperty()
timestamp = db.DateTimeProperty()
# I created 10 feed entities
# assuming i already have my 10 feed entities, I take their keys and put into this list
list_of_keys = ["key1","key2","key3",.........."key10"]
如果我使用
db.key(list_of_keys)
我得到了所有的实体。没问题。 因此,当所有密钥都存在时它会起作用(即:如果实体仍在数据存储区中,它可以工作)
但如果我删除其中一个实体,则db.key()将返回NoneType。
关于如何解决这个问题的任何建议?
PS:我试图避免在我的Feed系统中使用ReferenceProperty,因为我认为它可能会变得混乱
如果你仍然建议我使用ReferenceProperty,这是我的目标:
1.每个Feed实体应“属于”多个用户
2.每个用户最多可以有20个馈送
3.新的Feed将根据时间戳替换旧的feed。
很想听听你的想法/解决方案。
答案 0 :(得分:2)
假设您有编码实际键的字符串(而不仅仅是键名或其他内容),首先要创建字符串列表(您非常特别地混淆地选择调用键列表虽然显然显然是字符串的列表!而是!)回到Key
s的列表中:
thekeysforreal = [db.Key(k) for k in list_of_keys]
现在,db.get(thekeysforreal)
将根据the docs完成工作:
如果提供了一个密钥列表,那么 返回值是一个对应的列表 模型实例,无值 当没有实体存在时 对应的密钥。