2010-08-27 71 views
0

我想創建一個投票功能,單擊時增加類URL.votes +1。這是一個兩部分問題:交易GAE實體屬性

  1. 你如何拉實體鍵? (我認爲你需要鑰匙來區分哪個投票房產正在被修改?)

  2. 然後你怎麼寫鏈接執行投票的'a href'?

謝謝!


型號:

類URL(db.Model):

user = db.ReferenceProperty(User) 
website = db.StringProperty() 
created = db.DateTimeProperty(auto_now=True) 
votes = db.IntegerProperty(default=1) 

類投票(db.Model):

user = db.ReferenceProperty(User) #See if voted on this site yet 
url = db.ReferenceProperty(URL) #To apply vote to right URL 
upvote = db.IntegerProperty(default=1) 
created = db.DateTimeProperty(auto_now=True) 

控制器

類VoteHandler(webapp.RequestHandler):

def get(self): 
    doRender(self, 'base/index.html') 

def post(self): 

    #See if logged in 
    self.Session = Session() 
    if not 'userkey' in self.Session: 
     doRender(
      self, 
      '/', 
      {'error' : 'Please login to vote'}) 
     return 

    #Get current vote total 

    url = db.URL.get() #pull current site. This is where I think I need the help 
    url.votes += 1 #pull current site vote total & add 1 
    url.put(); 

    logging.info('Adding a vote'+nurl) 

    #Create a new Vote object 
    newvote = models.Vote(user=self.Session['userkey'], url=url) 
    newvote.put(); 

    self.get(); 

    self.redirect('/', { }) 

查看

A HREF = 「/投票」{{url.votes}}票 - {{url.website}}

回答

1

答案包括幾件事情:?

  1. 您需要使用查詢字符串來傳遞數據,對VoteHandler

A HREF =「/票url_id = {{網址.key.id}}「> {{url.votes}} votes - {{url.website}} - {{url.user.account}} - {{url.created | date:」M d,Y 「}}

  1. 單擊表決鏈接,是一個get()而不是post()。然後你使用model.get_by_id()

類VoteHandler(webapp.RequestHandler):

def get(self): 
    #See if logged in 
    self.Session = Session() 
    if not 'userkey' in self.Session: 
     doRender(
      self, 
      'base/index.html', 
      {'error' : 'Please login to vote'}) 
     return 

    #Get current vote total 
    key = self.request.get('url_id') 
    vurl = models.URL.get_by_id(int(key)) 
    vurl.votes += 1 #pull current site vote total & add 1 
    vurl.put(); 

    logging.info('Adding a vote') 

    #Create a new Vote object 
    newvote = models.Vote(user=self.Session['userkey'], url=vurl) 
    newvote.put(); 

    self.redirect('/', { }) 
0

您可以在視圖中使用url.votes.key.id

A HREF = 「/票*?ID = {{url.votes.key.id}} *」{{} url.votes } votes - {{url.website}}

+0

OK十分感謝 – Emile 2010-08-27 20:39:13