Matt, Take a look at the formencode module, it will simplify what you are trying to do here - handles all your parameter validation, form filling, and telling the user X,Y,Z are wrong etc.
http://wiki.pylonshq.com/display/pylonsdocs/Form+Handling and formencode docs http://www.formencode.org/ On Jan 5, 12:13 am, [EMAIL PROTECTED] wrote: > Matt Haggard wrote: > > I'm using SQLAlchemy with Pylons and am having trouble validating > > data. I have an App object mapped to a table with a unique constraint > > on App.number. > > > Here's some code: > > > q = Session.query(App) > > if app_id: > > q = q.filter_by(id=app_id).first() > > if q: > > c.app = q > > number = request.params.get('number') > > notes = request.params.get('notes') > > if appmodel and number: > > try: > > q.number = number > > q.notes = notes > > Session.save(q) > > Session.commit() > > c.message = 'Record updated' > > except: > > # restore pre-form data ?? how?? > > c.message = 'Error updating record' > > return render('index.mtl') > > else: > > return self.index() > > > My questions are: > > > 1) When I do the try statement, the value of q.number changes to > > whatever the user passed in via the form -- even if it's invalid, so > > that when I render the page, the invalid value is used. How do I > > reset the object to have the values it had before I did the try? Do I > > have to get it afresh from the db? > > try something like session.refresh( obj) or similar > > > 2) How do I let the user know which value caused the record not to > > update? What information does SQLAlchemy provide back that I can use > > to say: "You're number must be unique... and such-and-such must be > > greater than 0, etc..?" > > mmh, do not mistake DB-constraints with validation-rules. > the only sensible info u can get here is that the record is not unique > (check what sort of exception that throws), but any further interpretation - > why, what, where - is up to you - u have to know what field u have just > set/changed, etc. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---