Clemens Thanks for this.
Have you ever used extra_fields in SQLFORM? I'm wondering what it is for if it doesn't work the way I'm using it. -Jim On Friday, May 1, 2020 at 1:16:36 PM UTC-5, Clemens wrote: > > Hi Jim, > > I've solved it as follows (for an additional field to select the > corresponding business unit, here stored in a dictionary): > > biz_unit = TR(TD(LABEL(T('Responsible'), XML('  '))), \ > TD(SELECT(_name='biz_unit', value='', *[OPTION(biz_unit_title, > _value=biz_unit_dict[biz_unit_title]) \ > for biz_unit_title in sorted(biz_unit_dict)]))) > form[0].insert(-1, biz_unit) > > Hope it helps! > > Best regards > Clemens > > > On Friday, May 1, 2020 at 5:53:36 PM UTC+2, Jim S wrote: >> >> Anyone have experience with using 'extra_fields' in a SQLFORM? >> >> Here is my code: >> >> >> def edit_demo(): >> response.view = 'producer/edit/edit_demo.load' >> >> producer_id = request.get_vars.producer_id >> >> producer = db(db.producer.id == producer_id).select().first() >> >> form = None >> if producer: >> fields = ['name', 'address', 'city', >> 'state', 'zip_code', 'primary_contact', >> 'primary_phone', 'primary_email', 'secondary_contact', >> 'secondary_phone', 'secondary_email', 'grade', >> 'district'] >> >> extra_fields = [] >> for pt in db(db.producer_type.id > 0).select(orderby=db. >> producer_type.name): >> if db((db.producer_producer_type.producer_type == pt.id) & >> (db.producer_producer_type.producer == producer.id)). >> select().first(): >> has_producer_type = True >> else: >> has_producer_type = False >> extra_fields.append(Field(fieldname='pt%s' % pt.id, >> type='boolean', >> default=has_producer_type, >> label=pt.name)) >> >> form = SQLFORM(db.producer, record=producer_id, fields=fields, >> showid=False, extra_fields=extra_fields, >> table_name='edit_demographics', formname= >> 'edit_demographics_form') >> >> if form.process().accepted: >> >> response.flash = None >> >> url = URL('index', args=['edit', 'producer', producer_id], >> user_signature=True, extension=False) >> url += '&jump=demographics_jump' >> redirect(url, client_side=True) >> >> return dict(form=form, is_owner=is_owner, is_admin=is_admin) >> >> And it is giving me this error: >> >> Traceback (most recent call last): >> File "/home/jim/dev/web2py/gluon/restricted.py", line 219, in restricted >> exec(ccode, environment) >> File "/home/jim/dev/web2py/applications/connect/controllers/producer.py" >> <http://127.0.0.1:8000/admin/default/edit/connect/controllers/producer.py>, >> line 1621, in <module> >> File "/home/jim/dev/web2py/gluon/globals.py", line 422, in <lambda> >> self._caller = lambda f: f() >> File "/home/jim/dev/web2py/applications/connect/controllers/producer.py" >> <http://127.0.0.1:8000/admin/default/edit/connect/controllers/producer.py>, >> line 1609, in edit_demo >> table_name='edit_demographics', formname='edit_demographics_form') >> File "/home/jim/dev/web2py/gluon/sqlhtml.py", line 1505, in __init__ >> default = record[fieldname] >> File "/home/jim/dev/web2py/gluon/packages/dal/pydal/objects.py", line 145, >> in __getitem__ >> raise KeyError(key) >> KeyError: 'pt3' >> >> I'm not understanding how to define extra_fields in this context. In the >> end, the form is supposed to look like the attached. I'm trying to add the >> checkboxes at the bottom of the form. >> >> I have it all working with SQLFORM.factory but would prefer that I do it >> with the base SQLFORM. Thoughts? >> >> -Jim >> >> -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/61093f3d-ba54-456c-8157-a8794b13b78e%40googlegroups.com.