Yes, you are right. That was the problem and it shows up in the grid now,
but I can't see it in the view form. All included fields are readable.
Thank you


2014-07-23 17:53 GMT+02:00 Anthony <abasta...@gmail.com>:

> I think the problem is that your virtual field depends on some fields you
> have not included in your grid, so the virtual field values cannot be
> calculated. Instead of specifying the "fields" argument, you can hide
> particular fields from the grid by setting their "readable" attribute to
> False. In that case, all the fields will be included in the query done by
> the grid, which will enable the virtual field values to be calculated.
>
> Anthony
>
>
> On Wednesday, July 23, 2014 10:41:54 AM UTC-4, Adam Filić wrote:
>>
>> One year later I still can't display virtual field in the SQLFORM.grid
>> with an error:
>> <type 'exceptions.AttributeError'> 'Row' object has no attribute 'broj'
>> And my virtual field is defined as:
>>
>> db.define_table('fin_fis',
>>     Field('god','integer',label=T('Year')),
>>     Field('pod','reference sif_pod',label=T('Company'),writable=False,
>> readable=False),
>>     Field('oj','reference sif_oj',label=T('Department')),
>>     Field('kasa','integer',label=T('Billing device')),
>>     Field('vd','reference sif_vd',label=T('Document type')),
>>     Field('br','integer',label=T('Number')),
>>     Field.Virtual('broj',lambda  row: '%05d/P%03d%03d/%d'%(row.fin_fis.br
>> ,row.fin_fis.oj,row.fin_fis.vd,row.fin_fis.kasa),label='Broj'),
>>     .....
>>     )
>>
>> This is my field list:
>> fields = (db.fin_fis.oj,db.fin_fis.kasa,db.fin_fis.br,db.fin_fis.
>> broj,db.fin_fis.dvi,db.fin_fis.iznrac,db.fin_fis.npl,db.sif_radnici.ime,
>> db.sif_radnici.prezime)
>>
>> I'm using:  2.9.5-stable+timestamp.2014.03.16.02.35.39 (Running on
>> Apache/2.4.9 (Ubuntu), Python 2.7.3)
>>
>>
>> Dana subota, 20. srpnja 2013. 11:54:24 UTC+2, korisnik peckto napisao je:
>>>
>>> I think i can explain this behaviour.
>>> The statement "var in list" cals the lists __contains__ method,
>>> which loops through the list and compares each element with var.
>>> But in case of an Field object the equals operator (__eq__) has another
>>> meaning,
>>> it's the "WHERE" part of the db query:
>>> db(db.table.id==1).select()
>>> So this comparison will olways return True.
>>>
>>>
>>> Am Samstag, 20. Juli 2013 09:00:52 UTC+2 schrieb Massimo Di Pierro:
>>>>
>>>> Strange. Ok. I changed it again. Can you please check it. I am still
>>>> trying to avoid the double loop for every virtual table.
>>>>
>>>> On Friday, 19 July 2013 16:54:05 UTC-5, peckto wrote:
>>>>>
>>>>> Regarding your changes:
>>>>> +            all_fields = filter(lambda nv: nv[1] in fields and
>>>>> +                                isinstance(nv[1],(FieldVirtual,
>>>>> FieldMethod)),
>>>>> +                                table.iteritems())
>>>>> It doesn't work. It ends up in returning all virtual fields, even when
>>>>> they are not requested.
>>>>> It's because of the "var in list" statement:
>>>>> nv[1] in fields
>>>>> always returns True. I don't know why.
>>>>>
>>>>> Another solution would be to use the id() function:
>>>>> id(nv[1]) in [id(f_) for f_ in fields]
>>>>> but you have overwritten this function
>>>>> 2091: id = value
>>>>>
>>>>> So I came finally to the complicated looking statement:
>>>>> nv[0] in [f_.name for f_ in fields] and nv[1].tablename == tablename
>>>>>
>>>>> Maybe you can tell me why the "var in list" statement fails
>>>>> or we use one of the other solutions (while renaming the id value).
>>>>>
>>>>  --
> 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/yIRGzpZYcbg/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Srdačan pozdrav

Adam Filić

www.tt-program.com

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to