我正在使用GAE构建博客。我想使用ID密钥删除存储在数据存储区中的特定帖子。我的代码是..
#my db model
class Post(db.Model):
subject = db.StringProperty(required = True)
content = db.TextProperty(required = True)
created = db.DateTimeProperty(auto_now_add = True)
lastmodified = db.DateTimeProperty(auto_now = True)
#my delete post handler
class DeletePost(Bloghandler):
def post(self):
key = self.request.get('id')
#my html form which passes the ID of the entity.
<form method="post" class="button-link" action="http://localhost:8080/blog/delete">
<input type="hidden" name="id" value={{p.Key().id()}}>
<input type="submit" name="delete" value="Delete">
</form><br><br>
有一个类似的帖子来删除涉及blobstore的实体,这使我很难遵循和实施。任何帮助将不胜感激!:)
答案 0 :(得分:2)
db.delete(键)
除此之外,我真的不明白你的问题。如果你有密钥,你只需使用所述密钥
调用db.delete你还需要什么(如果我不清楚你在问什么)?
答案 1 :(得分:1)
无需从Datastore实际获取实体以删除它。由于您拥有密钥的ID,因此您可以使用Key.from_path
class DeletePost(Bloghandler):
def post(self):
key_id = self.request.get('id')
db.delete(db.Key.from_path('Post', key_id))
请注意,如果您在密钥中添加父密钥,则此提议和其他建议的解决方案不会出现,这在您开始考虑一致性模型时可能很重要。
相反,您应该使用密钥的序列化版本:
class DeletePost(Bloghandler):
def post(self):
key = db.Key(encoded=self.request.get('id'))
db.delete(key)
<form method="post" class="button-link" action="http://localhost:8080/blog/delete">
<input type="hidden" name="id" value={{p.key()}}>
<input type="submit" name="delete" value="Delete">
</form><br><br>
正如here所述,在str()
上使用db.Key
将返回密钥的urlsafe字符串编码,然后由Key
构造函数读取。