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/679ecdd0-fef8-4620-81b8-c218a0bc435e%40googlegroups.com.

Reply via email to