Instead of listing the fields to include in the grid, try setting the
"readable" attributes of fields you *don't* want to display to False. In
that case, I think all the fields will get included in the query (not
totally sure, though).
Anthony
On Monday, January 20, 2014 10:23:40 AM UTC-5, horridohobbyist wrote:
>
> "Ah, I see," said the blind man as he picked up his hammer and saw!
>
> I was trying to use 'sale' and also NOT to display it in the grid. I don't
> suppose there's a workaround.
>
> Thanks.
>
> On Monday, 20 January 2014 09:09:30 UTC-5, Massimo Di Pierro wrote:
>>
>> Here:
>>
>> SQLFORM.grid(db.products,fields=[db.products.name
>> ,db.products.category,db.products.description,db.products.price],
>>
>> You are asking the grid to select "price" but not "sale", yet the
>> representation of "price" requires the field "sale" which is not retrieved
>> from the database.
>> You need to select "sale" as well.
>>
>> On Monday, 20 January 2014 06:43:38 UTC-6, horridohobbyist wrote:
>>>
>>> In db.py, I have:
>>>
>>> db.define_table('products',
>>> Field('name',length=64,unique=True),
>>> Field('category',length=64),
>>> Field('description','text',represent=lambda v, r:
>>> XML(v)),
>>> Field('price','decimal(6,2)',represent=lambda v, r:
>>> '$'+str(v) if r.sale == 'regular' else B('$'+str(v))),
>>> Field('sale'))
>>>
>>> In index.html, I have:
>>>
>>> {{=SQLFORM.grid(db.products,fields=[db.products.name
>>> ,db.products.category,db.products.description,db.products.price],
>>> maxtextlength=1000,
>>> csv=False)
>>> }}
>>>
>>> The traceback says:
>>>
>>> Traceback (most recent call last):
>>> File "/home/www-data/web2py/gluon/restricted.py", line 212, in restricted
>>> exec ccode in environment
>>> File
>>> "/home/www-data/web2py/applications/HorridoHobbies/views/default/index.html",
>>> line 85, in <module>
>>> File "/home/www-data/web2py/gluon/sqlhtml.py", line 2291, in grid
>>> value = field.represent(value, row)
>>> File "/home/www-data/web2py/applications/HorridoHobbies/models/db.py"
>>> <https://67.213.70.251/admin/default/edit/HorridoHobbies/models/db.py>,
>>> line 94, in <lambda>
>>> Field('price','decimal(6,2)',represent=lambda v, r: '$'+str(v) if
>>> r.sale == 'regular' else B('$'+str(v))),
>>> AttributeError: 'Row' object has no attribute 'sale'
>>>
>>>
>>> Thanks.
>>>
>>>
>>> On Monday, 20 January 2014 00:50:39 UTC-5, Massimo Di Pierro wrote:
>>>>
>>>> When do you get that error? It does not originate in the model. Can you
>>>> show is the controller that you call when you get the error?
>>>>
>>>> On Sunday, 19 January 2014 21:51:42 UTC-6, horridohobbyist wrote:
>>>>>
>>>>> I have a database definition:
>>>>>
>>>>> db.define_table('products',
>>>>> Field('price','decimal(6,2)',represent=lambda v, r: 1
>>>>> if r.sale == 'regular' else 2),
>>>>> Field('sale'))
>>>>>
>>>>> I get an error saying that the 'Row' object has no 'sale' attribute.
>>>>> I'm puzzled. Of course, it has a 'sale' attribute; it's right there in
>>>>> the
>>>>> definition! What gives??
>>>>>
>>>>>
--
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.