No, it doesn't.
It simply doesn't show the field.
sábado, 30 de Março de 2019 às 19:43:46 UTC, Jim S escreveu:
>
> Just change it to
>
> Field('sn', label=T('SN'), writable=False)
>
> Doesn't that work?
>
>
> Jim
>
>
>
>
> On Sat, Mar 30, 2019, 2:31 PM João Matos <[email protected] <javascript:>>
> wrote:
>
>> This is my code
>> 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,
>> )
>>
>>
>> sábado, 30 de Março de 2019 às 19:03:40 UTC, Anthony escreveu:
>>>
>>> Hard to say without seeing your code, but it definitely works for me.
>>>
>>> On Saturday, March 30, 2019 at 2:37:27 PM UTC-4, João Matos wrote:
>>>>
>>>> How can I use the fields argument without a db?
>>>> I tried
>>>> fields=['sn']
>>>> but it returns an KeyError.
>>>>
>>>>
>>>> sábado, 30 de Março de 2019 às 18:27:11 UTC, Anthony escreveu:
>>>>>
>>>>> I don't see any advantage in using the fields parameter because the
>>>>>> change I found
>>>>>> form.element('#no_table_sn')['_readonly'] = 'readonly'
>>>>>> and the suggestion you made
>>>>>> widget=lambda f, v: SQLFORM.widgets.string.widget(f, v, _readonly=
>>>>>> True)
>>>>>> only change 1 line, and using the fields would make me change all the
>>>>>> Fields lines (if I'm not mistaken).
>>>>>>
>>>>>
>>>>> No, "fields" is an argument of SQLFORM:
>>>>>
>>>>> form = SQLFORM.factory(..., fields=['field1', 'field2', ...])
>>>>>
>>>>> Anyway, setting the _readonly attribute of the input widget and
>>>>> setting writable=False in the Field() definition do two different things.
>>>>> The former makes the input element read-only in the UI but is less secure
>>>>> because it does not prevent writes on the server. The latter does not use
>>>>> an input element to display the data in the UI, and it also prevents
>>>>> writes
>>>>> on the server.
>>>>>
>>>>> Anthony
>>>>>
>>>> --
>> 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
>> [email protected] <javascript:>.
>> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.