Thanks Richard, I should have provided more details. When I tried to create a form using SQLFORM.factory for two tables (including auth_user), I would get an error that the auth_user email and username existed even if I wasn't updating those fields. It appears that the validator to assure those fields are unique does not exclude the current values. I was able to fix this by adding these before calling SQLFORM.factory:
emails = db(db.auth_user.email != user.email) db.auth_user.email.requires = IS_NOT_IN_DB(emails, 'auth_user.email') usernames = db(db.auth_user.username != user.username) db.auth_user.username.requires = IS_NOT_IN_DB(usernames, 'auth_user.username') My entire function to create an edit form for two tables: def edit(): investor = db.investor(request.args(0)) or redirect(URL('index')) user = db.auth_user(investor.auth_user) emails = db(db.auth_user.email != user.email) db.auth_user.email.requires = IS_NOT_IN_DB(emails, 'auth_user.email') usernames = db(db.auth_user.username != user.username) db.auth_user.username.requires = IS_NOT_IN_DB(usernames, 'auth_user.username') db.auth_user.password.writable = False db.investor.auth_user.readable = False db.investor.auth_user.writable = False form = SQLFORM.factory(db.auth_user, db.investor) for f in db.investor.fields: form.vars[f] = investor[f] for f in db.auth_user.fields: form.vars[f] = user[f] if form.validate(): investor.update_record(**db.investor._filter_fields(form.vars)) user.update_record(**db.auth_user._filter_fields(form.vars)) session.flash = '%s updated!' % table._singular redirect(URL(request.controller, 'list')) elif form.errors: response.flash = 'Please correct the errors' response.view = 'template/edit.html' return dict(item_name=table._singular, form=form) Now I'm working on a readonly form but the readonly option for SQLFORM.factory doesn't display the values from form.vars so I may just generate the form manually. On Wednesday, April 20, 2016 at 3:58:37 PM UTC-4, Richard wrote: > > Hello Michael, > > I am not sure to understand what you are trying to acheive exactly and > what is causing issue... > > On Wed, Apr 20, 2016 at 2:18 PM, Michael Beller <mjbe...@gmail.com > <javascript:>> wrote: > >> >> The approach in the book for one form for multiple tables works well for >> create forms: >> >> http://web2py.com/books/default/chapter/29/07/forms-and-validators#One-form-for-multiple-tables >> >> I have not found a good method for view or update forms. >> >> I have a model: >> >> db.define_table('buyer', Field('auth_user', 'reference auth_user', ...) >> db.define_table('seller', Field('auth_user', 'reference auth_user', ...) >> >> Each buyer is associated with one user and each seller is associated with >> one user. I'd like to have one form to view and edit each buyer and seller >> that includes their user profile. >> >> I've tried variations of >> >> https://groups.google.com/forum/#!searchin/web2py/sqlform.factory$20edit/web2py/fvzIHyN7eP4/ZixpDiTl1GUJ >> and >> https://groups.google.com/forum/#!topic/web2py/hpH7a3Qz3Wg >> >> Has anybody found a good solution? >> >> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.