2013-01-16 50 views
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) 

試圖與實體使用一對多關係。 如果你添加一個帖子,它會關聯到一個用戶。用戶的GAE數據存儲實體ReferenceProperty()?

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 

所以它似乎不是將用戶表與帖子相關聯的最佳方式,因爲用戶在發佈時不應輸入密碼。任何人都有更好的方法來做到這一點?提前致謝。

+1

是否有一個原因,你正在實現自己的用戶對象? – bossylobster

+1

使用會話,對其進行散列,使用某些種子將其存儲在cookie中,等等。 –

+0

我希望能夠用頭像和其他值創建用戶配置文件。看起來更容易創建我自己的用戶對象。 – tipsywacky

回答

2

您的第一行不是檢索用戶,而是創建一個新用戶。如果您想將帖子與現有用戶相關聯,則需要先查找用戶,然後將其關聯。嘗試這樣的:

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