我有一个从表单中获取图像的函数,并将其与用户名一起放入数据库中。所以,这是我的数据库:
class Imagedb(db.Model):
name = db.StringProperty(required = True)
image = db.BlobProperty()
以下是写入数据库的代码:
class Change_Profile_Image(MainHandler):
def get(self):
if self.user:
self.render('change_profile_image.html', username = self.user.name, firstname=self.user.first_name)
else:
self.render('change_profile_image.html')
def post(self):
imagedb = Imagedb(name = self.user.name)
imageupl = self.request.get("img")
imagedb.image = db.Blob(imageupl)
imagedb.put()
self.redirect('/profile')
任何人,它都很棒。除了一件事。我想要完成的只是存储一张个人资料图片。最终发生的是:
说我是用户管理员。我上传一张显示图片,该图片显示在个人资料中。我会上传另一个,那个显示。很酷,除了我的数据库中有2个具有name = admin属性的对象。我想编辑这个......
def post(self):
imagedb = Imagedb(name = self.user.name)
imageupl = self.request.get("img")
imagedb.image = db.Blob(imageupl)
imagedb.put()
self.redirect('/profile')
这样我就可以将图像发布到数据库中,但如果存在,则会被覆盖。有人可以帮我这个吗?我对python和app引擎比较陌生。
如果不清楚,请告诉我。
答案 0 :(得分:1)
您希望将Imagedb实体的键设置为“name”。基本上,您不需要名称字段,但您将像
一样实例化它imagedb = Imagedb(key_name = self.user.name)
密钥是所有实体的必填字段。通过使用您的用户名作为密钥,它意味着每次您引用给定密钥时,它都是同一个实体。