Python GAE用户的数据存储实体ReferenceProperty()?

Python GAE用户的数据存储实体ReferenceProperty()?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,尝试与实体使用一对多关系。 如果添加帖子,它将与用户关联 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

尝试与实体使用一对多关系。 如果添加帖子,它将与用户关联

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)

所以这似乎不是将用户表与帖子关联的最佳方式,因为用户在发布时不应该输入密码。有人有更好的方法吗?提前感谢。

您的第一行不是检索用户,而是创建一个新用户。如果要将帖子与现有用户关联,则需要首先查找用户,然后将其关联。试着这样做:

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

你实现自己的用户对象是有原因的吗?使用会话,散列它,用一些种子将它加密存储在cookie中,等等。我希望能够创建一个带有化身和其他值的用户配置文件。似乎创建自己的用户对象更容易。
q = User.all()
q.filter("username =", self.request.cookies.get('username'))
user = q.get()
TaskPost(user=user,others=others).put()