2009-12-22 4 views
1

J'essaye de créer une fonction d'utilisateur unique simple à utiliser dans un schéma Formencode. Voici la fonction:Sqlalchemy requête ne pas valider

class UniqueUsername(formencode.FancyValidator): 
    def _to_python(self, value, state): 
     user = DBSession.query(User.user_name).filter(User.username==value) 
     if user is not None: 
      raise formencode.Invalid(
      'That username already exists', value, state) 
     return value 

Le problème est que la requête est générée mais ne frappe jamais réellement la base de données. La variable utilisateur contient simplement la requête générée, pas les résultats de la requête. Comment puis-je réparer cela? Merci beaucoup.

Répondre

4

Il devrait être:

user = DBSession.query(User.user_name).filter(User.username==value).first() 

aussi: est-il User.user_name ou user.username?

+0

merci pour la réponse rapide - pourriez-vous me diriger vers l'endroit dans les docs qui explique ce comportement? Merci encore. – Marc

+0

http://www.sqlalchemy.org/docs/05/reference/orm/query.html#sqlalchemy.orm.query.Query.first – zeemonkee

Questions connexes