1

私はドキュメントを読み、読み、また読み直し、Web で多くの検索を行いましたが、アプリが正しく動作しない理由をまだ理解していません。ユーザーが接続すると、フォームに入力する必要があります。このコードは機能します。ユーザーがログアウトしてからログインすると、フォーム フィールドにユーザーの情報が入力されます。したがって、データは正しく保存されます。ただし、ユーザーがフォーム フィールドの値を変更してフォームを送信しても、データは更新されません。

私のモデル:

class Members(db.Model):
    account = db.UserProperty()
    hashtags = db.StringProperty()

フォームを送信するクラスは次のとおりです。

class Submit(webapp.RequestHandler):
def post(self):
    user = users.get_current_user()

    if user:
        url = users.create_logout_url('/')
        url_linktext = 'Logout'

        member = db.GqlQuery("SELECT * FROM Members WHERE account = :1", user)

        if member.count(1) > 0:
            m = Members(account=user)
            m.hashtags = ','.join([
                self.request.get('hashtag1'),
                self.request.get('hashtag2'),
                self.request.get('hashtag3')])
            m.put()
        else:
            member = Members()
            member.account = user
            member.hashtags = ','.join([
                self.request.get('hashtag1'),
                self.request.get('hashtag2'),
                self.request.get('hashtag3')])
            member.put()

        self.redirect('/')
    else:
        self.redirect('/')
4

1 に答える 1

3

問題は、既存のレコードを更新するのではなく、新しいレコードを追加していることです。コードの場合、最も簡単な修正はこれを変更することです。

if member.count(1) > 0:
    m = Members(account=user)

に:

if member.count(1) > 0:
    m = member[0]

コードが既存のレコードを更新している理由は、キーを割り当てていないためです。キーの詳細については、Kinds and Identifiers を参照してください。

于 2012-04-21T07:00:55.713 に答える