I am not sure, but .factory() should accept readonly=True for read form... Are you sure you have not any fields with the same name in both tables?
On Thu, Apr 21, 2016 at 2:00 PM, Richard Vézina <ml.richard.vez...@gmail.com > wrote: > Michael, > > About displaying value use default = when you create input field it should > be all what you need... > > About the other problem I don't get it... You should be able to update a > record email/username as long as the new value is unique... > > Richard > > On Wed, Apr 20, 2016 at 11:43 PM, Michael Beller <mjbel...@gmail.com> > wrote: > >> 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> >>> 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. >>>> 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. >> > > -- 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.