0

我想重写GAE djangoforms文章中的示例,以便在使用 High Replication Datastore 在 Google App Engine 上提交表单(例如更新或添加新条目时)后显示最新。

本文中的主要重复查询是:

query = db.GqlQuery("SELECT * FROM Item ORDER BY name")

我们将翻译成:

query = Item.all().order('name')  // datastore request

这个查询我想在提交表单后从高复制数据存储中获取最新的更新数据(仅在这些情况下,我假设我可以在提交后重定向到特定的 url,它只使用查询最新数据和所有其他情况下我不会这样做)。

验证存储结果的表单如下:

data = ItemForm(data=self.request.POST)
if data.is_valid():
    # Save the data, and redirect to the view page
    entity = data.save(commit=False)
    entity.added_by = users.get_current_user()
    entity.put()  // datastore request

并从数据存储中获取用于填充表单(用于编辑)的最新条目,如下所示:

id = int(self.request.get('id'))
item = Item.get(db.Key.from_path('Item', id))  // datastore request
data = ItemForm(data=self.request.POST, instance=item)

那么如何将实体组/祖先键添加到这些数据存储查询以反映表单提交后的最新数据。请注意,在填充表单(用于编辑)和提交表单后,我不希望所有查询都具有最新数据。

谁能帮我提供实用的代码示例?

4

1 回答 1

0

如果它在同一个块中,则您有当前实例的引用。
然后,一旦你put()得到它,你可以id通过以下方式获得它:

if data.is_valid():
    entity = data.save(commit=False)
    entity.added_by = users.get_current_user()
    entity.put()  
    id= entity.key().id() #this gives you inserted data id
于 2011-12-29T09:26:40.923 回答