正在覆盖App Engin中的数据

2024-04-24 19:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,可以从表单中获取一个图像,并将其与用户名一起放入数据库。这是我的数据库:

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')

任何人,它都很棒。除了一件事。我要做的是只存储一张个人资料图片。最终的结果是:

假设我是用户管理员。我将上传一个显示图片,该图片显示在个人资料。我再上传一个,那一个显示。很酷,只是我的数据库中有两个对象具有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和appengine还比较陌生。你知道吗

如果有什么不清楚的地方,请告诉我。你知道吗


Tags: name图像imageself数据库dbgetdef
1条回答
网友
1楼 · 发布于 2024-04-24 19:24:25

您希望将Imagedb实体的键设置为“name”。基本上,您不需要name字段,但是您可以将其实例化为

imagedb = Imagedb(key_name = self.user.name)

键是所有实体上的必填字段。使用用户名作为密钥意味着每次引用给定的密钥时,它都是同一个实体。你知道吗

相关问题 更多 >