0
class User(db.Model):
    username = db.StringProperty(required=True)
    password = db.StringProperty(required=True)
    email_address = db.StringProperty()

class TaskPost(db.Model):
    user = db.ReferenceProperty(User, collection_name='taskposts')
    category = db.StringProperty()
    title = db.StringProperty(required=True)

エンティティとの 1 対多の関係を使用しようとしています。投稿を追加すると、ユーザーに関連付けられます。

user = User(username=self.request.cookies.get("username"))
TaskPost(user=user,others=others).put()

  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 641, in validate
    raise BadValueError('Property %s is required' % self.name)
BadValueError: Property password is required

したがって、投稿時にユーザーがパスワードを入力してはならないため、ユーザーテーブルを投稿に関連付けるのが最善の方法ではないようです。誰でもそれを行うためのより良い方法がありますか? 前もって感謝します。

4

1 に答える 1

2

最初の行はユーザーを取得するのではなく、新しいユーザーを作成しています。投稿を既存のユーザーに関連付ける場合は、まずユーザーを検索してから関連付ける必要があります。次のようなことを試してください:

q = User.all()
q.filter("username =", self.request.cookies.get('username'))
user = q.get()
TaskPost(user=user,others=others).put()
于 2013-01-16T18:06:22.703 に答える