0

フォームから画像を取得し、それをユーザー名とともにデータベースに入れる関数があります。だから、ここに私のデータベースがあります:

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

誰でも、それは素晴らしい作品です。一つのことを除いて。私が達成しようとしているのは、プロフィール写真を 1 つだけ保存することです。最終的に何が起こるかは次のとおりです。

私がユーザー管理者だとします。ディスプレイの写真をアップロードします。その写真はプロフィールに表示されます。別のものをアップロードします。name = admin 属性を持つデータベースに 2 つのオブジェクトがあることを除けば、クールです。これを編集したいのですが...

    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とアプリエンジンに比較的慣れていません。

ご不明な点がございましたら、お知らせください。

4

1 に答える 1

1

Imagedbエンティティのキ​​ーを「name」に設定します。基本的に、名前フィールドは必要ありませんが、次のようにインスタンス化します。

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

キーは、すべてのエンティティの必須フィールドです。ユーザー名をキーとして使用することは、特定のキーを参照するたびに、それが同じエンティティであることを意味します。

于 2012-07-28T05:59:46.870 に答える