1

Je reçois le message d'erreur suivant lorsque j'essaie de soumettre une nouvelle entité dans GAE.Problème lors de la création de l'entité GAE

File "C:\Users\Chris\Documents\Web Apps\legalstudybuddy\main.py", line 179, in post 
    c = Courses(user=user, title=title) 
TypeError: __init__() got an unexpected keyword argument 'user' 

Voici mon code Python:

class Courses(db.Model): 
    user = db.StringProperty(required = True) 
    title = db.StringProperty(required = True) 
    created = db.DateTimeProperty(auto_now_add = True) 

class Courses(Handler): 
    def get(self, courses="", title="", signup_username="", login_logout=""): 

     if not self.user: 
      self.redirect('/login') 

     user = str(self.read_secure_cookie('user_id')) 
     courses = db.GqlQuery('SELECT * from Courses WHERE user = :user ORDER BY created DESC', user=user) 

     signup_username, login_logout = self.user_check() 

     self.render('courses.html', courses=courses, 
        title=title, 
        signup_username=signup_username, 
        login_logout=login_logout) 

    def post(self): 
     if not self.user: 
      self.redirect('/login') 

     user = str(self.read_secure_cookie('user_id')) 
     title = self.request.get('title') 

     if title: 
      c = Courses(user=user, title=title) 
      c.put() 

     self.redirect('/courses') 

L'argument mot-clé inattendu est de créer l'entité non à partir du modèle de django. Toute aide serait très appréciée.

Répondre

1

Vous définissez deux fois Courses. Une fois que le modèle:

class Courses(db.Model): 
    user = db.StringProperty(required = True) 
    title = db.StringProperty(required = True) 
    created = db.DateTimeProperty(auto_now_add = True) 

Mais aussi comme gestionnaire:

class Courses(Handler): 
    # code 

Puisque vous définissez le gestionnaire deuxième, qui est ce qui est stocké comme Courses dans l'espace de noms en cours. Par exemple:

In [1]: class Courses(object): 
    ...:  a = 'First Courses' 
    ...:  
    ...:  

In [2]: class Courses(object): 
    ...:  a = 'Second Courses' 
    ...:  
    ...:  

In [3]: Courses.a 
Out[3]: 'Second Courses' 

je suggère de changer le nom du gestionnaire de sorte que vous ne recevez pas le conflit que vous obtenez maintenant (où lorsque vous appelez Courses(user=user), il tente d'appeler le gestionnaire à la place du modèle).

+0

Cela l'a corrigé. Merci beaucoup pour la réponse rapide. – user1927856

+0

@ user1927856 Aucun problème, certainement une erreur facile à faire. Bonne chance pour tout! – RocketDonkey

Questions connexes