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/b1f00702-f5fc-428e-9aae-4ae797a304cb%40googlegroups.com.