0

ユーザー名が既に存在するかどうかを確認するために、データベースにクエリを実行しようとしています。

モデルの定義は次のとおりです。

    class UserAccounts(db.Model):
        username = db.StringProperty(required=True)
        password = db.StringProperty(required=True)
        email = db.StringProperty()

サインアップ フォームからユーザー名を取得し、次のようにユーザー名をクエリしています。

    username = self.request.get('username')
    ...
    query = db.GqlQuery("SELECT * FROM UserAccounts WHERE username=:1", username).get()

query == username常に失敗しているかどうかを比較しようとしています。調査の結果、クエリ オブジェクトは、その位置に格納されている文字列ではなくメモリ アドレスを返しているだけであることがわかりました。その理由はわかり<main.UserAccounts object at 0x10433b990>ません。同じアプリで、別のモデルをクエリし、ループを使用してクエリ オブジェクトを調べてアイテムを取得しましたが、それは正常に機能します。Python 2.7 と GAE SDK 1.8 を使用しています。どんな助けでも大歓迎です。

4

1 に答える 1

2

メモリアドレスを返すのではなく、オブジェクトを返し、デフォルトの表現を表示しています。通常のドット表記でそのフィールドにアクセスするか__unicode__、デフォルトの文字列表現を定義するメソッドを定義できます。

于 2013-05-09T06:24:06.363 に答える