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.