如何使用DjangoForms实体组和祖先

时间:2011-12-22 18:26:08

标签: google-app-engine django-forms google-cloud-datastore entity-groups

我想在使用High Replication数据存储区在Google App Engine上提交表单(例如,更新或添加新条目时)之后,从GAE djangoforms文章中重写最新的示例。< / p>

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

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)

那么如何在这些数据存储区查询中添加实体组/祖先密钥以反映表单提交后的最新数据。请注意,在填写表单(进行编辑)和提交表单后,我不希望所有查询都包含最新数据。

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

1 个答案:

答案 0 :(得分: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