我有一種形式,用戶使用谷歌帳戶登錄,然後在谷歌應用程序引擎中製作或更新其個人資料。我想使用包含他們的電子郵件地址的表單域(該域自動填充來自谷歌的用戶信息)作爲新條目的關鍵字。這樣我就可以輕鬆地更新條目,因爲只要他們具有相同的電子郵件地址,他們將是相同的條目。這裏是我的表單模型和我的頁面發佈和獲取方法,我如何修改它們來設置密鑰?使用表單字段作爲實體鍵谷歌應用程序引擎python
class Athlete(db.Model):
#fields to be added to the form
norse_key = db.UserProperty()
key_name = norse_key
first_name = db.StringProperty()
last_name = db.StringProperty()
school_class = db.StringProperty()
sex = db.StringProperty()
home_address = db.StringProperty()
city = db.StringProperty()
state = db.StringProperty()
zip = db.IntegerProperty()
residence = db.StringProperty()
SPO = db.IntegerProperty()
cell = db.IntegerProperty
sport_1 = db.StringProperty()
sport_2 = db.StringProperty()
sport_3 = db.StringProperty()
class AthleteForm(djangoforms.ModelForm):
class Meta():
model = Athlete()
class AthleteFormPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
self.response.out.write((user))
query = db.GqlQuery("SELECT * FROM Athlete WHERE norse_key = :1", user)
item = None
for item in query:
self.response.out.write("%s,%s<br>" % (item.norse_key,item.first_name))
self.response.out.write('<div style="float:right"><a href="%s">Log Out</a> </div >'% (users.create_logout_url("/")))
self.response.out.write('<html> <body> <a href="/">Submit A Treatment Log</a> <form method="POST" action="/athleteformpage.html"> <table>')
if item != None:
self.response.out.write(AthleteForm(initial={'norse_key':item.norse_key,'first_name':item.first_name}))
else:
self.response.out.write(AthleteForm(initial={'norse_key':user}))
self.response.out.write('</table> <input type="submit"> </form> </body> </html>')
def post(self):
data = AthleteForm(data=self.request.POST)
if data.is_valid():
# Save the data, and redirect to the view page
entity = data.save(commit=False)
entity.added_by = users.get_current_user()
entity.put()
self.redirect('/athletes.html')
else:
# Reprint the form
self.response.out.write('<html><body> <form method="POST" action="/athleteformpage.html"> <table>')
self.response.out.write(data)
self.response.out.write('</table> <input type="submit"> </form></body></html>')
除非性場可以有像「是的請」或「一週三次」 「它應該是一個布爾屬性,而不是一個StringProperty –
問題不清楚......你不是已經用'db.UserProperty()'來做這個嗎?它會工作,你打算與'db.UserProperty(auto_current_user = True)'?或'user = users.get_current_user(); user_email = user.email()'?回答一個沒有道理的問題很難。除此之外,[用戶可以更改Google帳戶的電子郵件地址](http://code.google.com/appengine/docs/python/users/userclass.html#Introduction),所以這是一個有缺陷的前提。 –
在該領域的良好呼聲,我會讓它成爲一個下拉菜單,這個項目還處於發展初期。而這個應用程序將是一個使用谷歌領域的大學,並且你不允許改變你的大學谷歌電子郵件,這樣就不會出現問題,但是謝謝你指出它以備將來參考。 – marblecatdog