英文:
storing *Key to GAE local datastore give me error in DataStoreViewer
问题
我有一个在实体A中引用实体B的键。
我可以将数据放入数据存储中而不出错,但是当尝试从Datastore Viewer浏览实体A时,会出现以下错误:
> '找到不完整的键以用于引用属性%s。' % name)
> BadValueError: 找到不完整的键以用于引用属性ds_key。
似乎是将键归咎于不完整。如果我使用NewKey()获取一个完整的键,我需要手动提供一个唯一的字符串或整数ID给键,这不是我想要的。我只想让数据存储为我生成B的键,并将该键保存在实体A中。
谢谢
英文:
I have a *Key in entity A referring entity B.
I can put() the data to data store without error but when try to browse entity A from Datastore Viewer, it gives the following error:
> 'Incomplete key found for reference property %s.' % name)
> BadValueError: Incomplete key found for reference property ds_key.
it seems blaming the key to be incomplete. If I use NewKey() to acquire a complete key, I need to manually provide a unique string or int ID to the key which is not what I want. I just want datastore generate a key of B for me and I keep that key from entity A.
thanks
答案1
得分: 1
Put()
即使在使用不完整的Key进行Put()
操作时,也会返回一个完整的Key。你需要按照以下步骤进行操作:
- 为实体
B
生成一个不完整的Key(无需手动提供唯一ID)。 - 将实体
B
使用Put()
方法存储到数据存储中,并查看返回值,以获取完整的Key。 - 在实体
A
中使用该值。 - 将实体
A
使用Put()
方法存储到数据存储中。
现在,实体A
将正确引用实体B
。
英文:
Put()
returns a complete Key even when you Put()
with an incomplete Key. You need to
- Generate an incomplete Key for
B
(no need to manually provide a unique ID). Put()
B
to the datastore and look at the return value so you have a complete Key for it.- Use that value in entity
A
. Put()
A
to the datastore.
Now A
will correctly reference B
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论