How about doing:
SQLFORM.grid(..., formargs=dict(fields=[f.name for f in fields]))
Anthony
On Thursday, December 12, 2013 9:04:21 AM UTC-5, P T wrote:
>
> I rigged the sqlhtml.py, so that I can rearrange the fields in the form as
> well. The following worked for me, but not sure if it has any side effects:
>
> In sqlhtml.py, after the line
> create_form = update_form = view_form = search_form = None
>
> insert
>
> fieldnames = [f.name for f in fields]
>
> and include fieldnames in the following calls:
>
> create_form = SQLFORM(table, fields=fieldnames, **sqlformargs)
>
> view_form = SQLFORM(table, record, fields=fieldnames,**sqlformargs)
>
> update_form = SQLFORM(table, record, fields=fieldnames, **sqlformargs)
>
>
> I think, it would be nice to see the fields in the same arrangement both
> in grid and forms. This will also filter fields in the form. Currently,
> forms show all fields from the table.
>
> Thanks,
> PT
>
> On Wednesday, December 11, 2013 8:34:36 PM UTC-6, Massimo Di Pierro wrote:
>>
>> Now I understand better. The order of the parameters in forms is
>> specified in the table definition. You can rearrange in the grid view but
>> not in form.
>> I assume the order is fixed. You should change it in the
>> define_table(..., *fields)
>>
>>
>> On Tuesday, 10 December 2013 00:09:49 UTC-6, P T wrote:
>>>
>>> I think, the problem is due to the following calls in gluon.sqlhtml.py
>>> (lines 2050, 2072, and 2093), which does not include the optional parameter
>>> "fields"
>>>
>>> create_form = SQLFORM(table, **sqlformargs)
>>> view_form = SQLFORM(table, record, **sqlformargs)
>>> update_form = SQLFORM(table, record, **sqlformargs)
>>>
>>> So, I tried something like
>>>
>>> update_form = SQLFORM(table, record, fields=fields,
>>> **sqlformargs)
>>>
>>> and this generates the ticket
>>>
>>> <type 'exceptions.AttributeError'> 'Field' object has no attribute
>>> 'find'
>>>
>>> Version
>>> web2py™ Version 2.8.2-stable+timestamp.2013.11.28.13.54.07
>>> Python Python 2.7.5: C:\Python27\python.exe (prefix: C:\Python27)
>>> Traceback (most recent call last):
>>> File "C:\web2py-src\gluon\restricted.py", line 217, in restricted
>>> exec ccode in environment
>>> File "C:/web2py-src/applications/Test/controllers/default.py", line
>>> 77, in <module>
>>> File "C:\web2py-src\gluon\globals.py", line 372, in <lambda>
>>> self._caller = lambda f: f()
>>> File "C:\web2py-src\gluon\tools.py", line 3239, in f
>>> return action(*a, **b)
>>> File "C:/web2py-src/applications/Test/controllers/default.py", line
>>> 20, in index
>>> grid = SQLFORM.grid(query, fields=fields)
>>> File "C:\web2py-src\gluon\sqlhtml.py", line 2093, in grid
>>> update_form = SQLFORM(table, record, fields=fields,
>>> **sqlformargs)
>>> File "C:\web2py-src\gluon\sqlhtml.py", line 1053, in __init__
>>> if fieldname.find('.') >= 0:
>>> AttributeError: 'Field' object has no attribute 'find'
>>>
>>> There must be something wrong in how I included the fields param here.
>>>
>>>
>>>
--
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/groups/opt_out.