Antony, thanks for your answer, there were some things I did not know
you could do, but there is just a problem with:
|
db.define_table('review',
Field('author'),
Field('valuea','int'),
Field('valueb','int'),
Field('valuec','int'),
Field('place','reference place'))
defget_review_average(row):
# all the code...
# ...
returnvalue
db.review.value =Field.Virtual('value',get_review_average),
|
As you can see in https://github.com/web2py/pydal/issues/304 there is a
problem setting method and field attributes directly.
El 02/11/15 a las 11:38, Anthony escribió:
On Monday, November 2, 2015 at 9:50:34 AM UTC-5, Carlos Cesar
Caballero wrote:
ok, now is not so clean, the "functions" are before the
"variables" declarations,
In weppy, you have this (note the need for the @virtualfield decorator):
|
classReview:
author =Field()
value =Field('int')
valuea =Field('int')
valueb =Field('int')
place =Field('reference place')
@virtualfield('value')
defget_average(row):
# all the code...
# ...
returnvalue
|
In web2py, you can do this:
|
db.define_table('review',
Field('author'),
Field('valuea','int'),
Field('valueb','int'),
Field('valuec','int'),
Field('place','reference place'))
defget_review_average(row):
# all the code...
# ...
returnvalue
db.review.value =Field.Virtual('value',get_review_average),
|
Same number of lines in the same order. I agree, though, that the
first approach looks a little nicer (mainly because the virtual field
method is namespaced inside the class), but it's not a dramatic
difference (and it would be easy to write a simple decorator to add
the virtual field to the table in order to eliminate that last line).
Also, the second approach makes it easier to share the virtual field
function across multiple tables if needed (without having to worry
about multiple inheritance, etc.).
we could add some validations, and we get functions code, fields
declarations, and validation code, in that order
As noted above, you can put these in any order you want in web2py. I
also find it easier to keep all the attributes (e.g., validators,
represent function, etc.) of a given field together, but I suppose
that could vary depending on the situation.
I agree that table inheritance is more flexible with the class based
method. You can do some basic inheritance with web2py, but it becomes
trickier if you need to override specific fields or copy attributes
other than fields. I suppose this could be improved in web2py even
without using classes -- perhaps it has not been done because there
hasn't been much demand.
About the objects, if we could have real orm functionality, we
could do things like:
|
object=db.mytable[id]object.name ="the name"object.save()
|
I don't think we need an ORM for that:
|
row =db.mytable[id]
row.name ='the name'
row.update_record()
|
The non persistent variables is other thing, in some cases we need
to use non persistent variables, like flags, with the virtual or
method fields, we can define non persistent values, but we can't
edit them.
First, you can simply do:
|
row =db.mytable(id)
row.my_non_persistent_variable ='some value'
|
Second, you /can/ update virtual field values:
|
row.my_virtual_field ='new value'
|
Anthony
--
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]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
Este mensaje le ha llegado mediante el servicio de correo electronico que
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema
Nacional de Salud. La persona que envia este correo asume el compromiso de usar
el servicio a tales fines y cumplir con las regulaciones establecidas
Infomed: http://www.sld.cu/
--
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.