Ran*_*ang 10 google-app-engine
我想知道是否有人在Google App Engine的NDB上遇到了这个奇怪的问题:在创建一个新实体并将其保存之后put(); 然后query()立即减少一件物品.例如,
class Item(ndb.Model):
...
...
items = Item.query().fetch()
length1 = len(items)
item = Item()
item.put()
items = Item.query().fetch()
length2 = len(items)
Run Code Online (Sandbox Code Playgroud)
在上面,length1总是等于length2.但是,length2稍后重新访问同一HTML页面时将予以更正.问题是什么?谢谢.
正如@JesseRusak所说,你需要一个虚拟的祖先来解决这个小问题(我最近遇到了同样的问题).
但我没有制作新的DummyEntity,只是DummyAncestor的DummyKey.试试这个问题:
class Item(ndb.Model):
...
...
items = Item.query(ancestor=ndb.Key(Item, 'Items')).fetch()
length1 = len(items)
item = Item(parent=ndb.Key(Item, 'Items'))
item.put()
items = Item.query(ancestor=ndb.Key(Item, 'Items')).fetch()
length2 = len(items)
至少在我的情况下,DummyAncestor工作了.
The*_*AWS -3
我通过进行适当的查询、创建新的模型记录、然后在返回之前将其附加到我的查询中来解决这个问题。修改你的,它看起来像:
class Item(ndb.Model):
...
...
items = Item.query().fetch()
length1 = len(items)
item = Item()
item.put()
appended_items = list()
for existing_item in items:
appended_items.append(existing_item)
appended_items.append(item)
length2 = len(appendeditems)
Run Code Online (Sandbox Code Playgroud)
在本例中,append_items 包含您的查询以及新元素。列表生成效率低下,但我是一个 python/ndb 菜鸟,可能有一种方法可以从查询模型中获取集合,这会好得多。
| 归档时间: |
|
| 查看次数: |
5529 次 |
| 最近记录: |