Hi,
I have a function that works well and helps to compute the sum of fields
referenced by a list:reference field in another table :
table 'line' with field:
'price','double'
table 'invoice' with fields:
'line_id', 'list:reference'
'total','double'
def sum_total(row):
t=0
for id_line in row.line_id: t=t+db.line[id_line].price
return t;
db.invoice.total.compute=lambda r:sum_total(r)
This works well but I have to define this function for a lot of different
'total'-like fields. For the sake of learning, I'd like to write a function
that could pass the 'line' field's name too. Something like :
table 'line' with field:
'price_a','double'
'price_b','double'
...
table 'invoice' with fields:
'line_id', 'list:reference'
'total_a','double'
'total_b','double'
...
def sum_total(line_field_name,row):
t=0
for id_line in row.line_id: t=t+db.line[id_line].fieldname[line_field_name]
return t;
db.invoice.total_a.compute=lambda r:sum_total('price_a',r)
db.invoice.total_b.compute=lambda r:sum_total('price_b',r)
...
That make not the model crash, but it does not return an error either, and
does not compute anything : on update field is not updated, on create
field's value is 0.
I think it's because db.table.fieldname is a set and that I cannot pick one
by the record's value. How can I pick one by its name ?
--
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.