How can I add a read-only field to a SQLFORM.factory?
Thanks,
JM
Field('end', 'date', requires=IS_DATE('%m/%d/%Y'), default=default_end, writable=False)--
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 a topic in the Google Groups "web2py-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/web2py/U7zQi02p2MY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to web2py+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
It is readable and editable.
    form = SQLFORM.factory(
        Field('equipment_id',
              label=T('Equipment'),
              requires=IS_IN_DB(db, 'equipment.id', '%(name)s', zero=None),
        ),
        Field('sn', 'integer', label=T('SN'), writable=False),
        Field('code', label=T('WO'), requires=IS_EMPTY_OR(
            IS_IN_DB(db(query), 'wo.code', distinct=True))),
        Field('client_id',
              label=T('Client'),
              requires=IS_IN_DB(db, 'client.id', '%(name)s', zero=T('Choose one...')),
        ),
        Field('manual_lang_id',
              label=T('Manual language'),
              requires=IS_IN_DB(db,
                                'manual_lang.id',
                                '%(name)s',
                                zero=T('Choose one...'),
              ),
        ),
        Field('co_code', 'string', default='', label=T('Customer order')),
        Field('so_code', 'string', default='', label=T('Supplier order')),
        Field('export', 'boolean', default=False, label=T('Export')),
        Field('notes', 'string', default='', label=T('Notes')),
        Field('observations', 'string', default='', label=T('Observations')),
        Field('est_finish', 'date', label=T('Estimated finish'), notnull=True,
              required=True,
              requires=IS_DATE_IN_RANGE(  # format=T('%Y-%m-%d'),
                                        minimum=request.now.date() + timedelta(days=1),
                                        # maximum=request.now.date() + ,
                                        error_message=T('Must be a future date.')
              )
        ),
        *factory_fields,
        hidden={'mon': wo.modified_on},
    )
Can you show some code? Mine is working fine without a db and specifying writable=False.-Jim
On Fri, Mar 29, 2019 at 4:02 PM João Matos <jcrm...@gmail.com> wrote:
--It is readable and editable.
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 a topic in the Google Groups "web2py-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/web2py/U7zQi02p2MY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to web...@googlegroups.com.
form.element('#no_table_sn')['_readonly'] = 'readonly'_readonly='readonly'@AnthonyThis is a SQLFORM.factory not a SQLFORM.There is no database.Are you sure fields parameter is applicable to SQLFORM.factory w/o a db?
Found a solution (more like a kludge) :)
I even tried adding
Field('sn', widget=lambda f, v: SQLFORM.widgets.string.widget(f, v, _readonly=True))Is there a better way?
widget=lambda f, v: SQLFORM.widgets.string.widget(f, v, _readonly=True)form.element('#no_table_sn')['_readonly'] = 'readonly' 
widget=lambda f, v: SQLFORM.widgets.string.widget(f, v, _readonly=True)I don't see any advantage in using the fields parameter because the change I found
form = SQLFORM.factory(..., fields=['field1', 'field2', ...])fields=['sn']    form = SQLFORM.factory(
        Field('equipment_id',
              label=T('Equipment'),
              requires=IS_IN_SET({wo.equipment_id: db.equipment(wo.equipment_id).name},
                                 zero=None),
        ),
        Field('sn',
              label=T('SN'),
              widget=lambda field, value: (
                SQLFORM.widgets.string.widget(field, value, _readonly=True)),
        ),
        Field('code',
              label=T('WO'),
              requires=IS_EMPTY_OR(IS_IN_DB(db(query), 'wo.code', distinct=True)),
        ),
        Field('client_id',
              label=T('Client'),
              requires=IS_IN_DB(db, 'client.id', '%(name)s', zero=T('Choose one...')),
        ),
        Field('manual_lang_id',
              label=T('Manual language'),
              requires=IS_IN_DB(db,
                                'manual_lang.id',
                                '%(name)s',
                                zero=T('Choose one...'),
              ),
        ),
        Field('co_code', default='', label=T('Customer order')),
        Field('so_code', default='', label=T('Supplier order')),
        Field('export', 'boolean', default=False, label=T('Export')),
        Field('notes', default='', label=T('Notes')),
        Field('observations', default='', label=T('Observations')),
        Field('est_finish',
              'date',
              label=T('Estimated finish'),
              notnull=True,
              required=True,
              requires=IS_DATE_IN_RANGE(  # format=T('%Y-%m-%d'),
                                        minimum=request.now.date() + timedelta(days=1),
                                        # maximum=request.now.date() + ,
                                        error_message=T('Must be a future date.')
              )
        ),
        *factory_fields,
    )--
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 a topic in the Google Groups "web2py-users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/web2py/U7zQi02p2MY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to web2py+un...@googlegroups.com.
To unsubscribe from this group and all its topics, send an email to web...@googlegroups.com.
form.element('#no_table_sn')['_readonly'] = 'readonly'            widget=lambda field, value:
                SQLFORM.widgets.string.widget(field, value), _readonly=True),