2017-02-17 52 views
1

我试图实现一个简单的函数来喜欢帖子。 我有4个使用Google App Engine定义的模型;用户,博文,就像,评论一个意想不到的关键字参数python

下面

是片段:

class LikePost(db.Model): 
    user  = db.ReferenceProperty(User) 
    blogpost = db.ReferenceProperty(Blogpost) 
    date  = db.DateTimeProperty(auto_now_add = True) 

class Comment(db.Model): 
    user  = db.ReferenceProperty(User) 
    blogpost = db.ReferenceProperty(Blogpost) 
    content  = db.TextProperty(required = True) 
    date  = db.DateTimeProperty(auto_now_add = True) 

我试图调用的方法使用以下到喜爱的信息:

class LikePost(Handler): 
    def get(self,post_id): 
     blogpost = self.get_blogpost(post_id) 
     user = self.get_user_object() 
     if blogpost and user: 
      like = LikePost(user = user, blogpost = blogpost) 
      like.put() 
      self.redirect('/%s' % post_id) 
     else: 
      self.redirect('/login') 

给此方法的参考文献是作为遵循:

def get_user_object(self): 
     cookie = self.request.cookies.get('user_id') 
     if cookie: 
      user_id = check_secure_val(cookie) 

      if user_id: 
       user_id = cookie.split('|')[0] 
       key = db.Key.from_path('User', int(user_id)) 
       user = db.get(key) 
       return user 

DEF get_blogpost(个体,POST_ID): 键= db.Key .from_path( '博文',INT(POST_ID)) 博文= db.get方法(钥匙) 回报的博文

我试图运行上面的时候会出现错误:

__init__() got an unexpected keyword argument 'blogpost' 

任何人都可以解释什么出错 ?

回答

0

您已经定义为

class LikePost(db.Model): 

那么您已经定义了处理器的型号有

class LikePost(Handler): 

注意到它们具有相同的名称。因此,在你的get方法中,你的Handler子类的范围是什么,它显然不期望博客文章关键字参数为__init__方法。简单的解决方案,重命名一个或另一个或

from models import LikePost as LP 

,并使用该

+0

错过了一部分,谢谢,解决了这个问题 –

+0

你是欢迎和高兴一直帮助 – e4c5

相关问题