hi, thanks i'll take a look at the hasattr().
that's not exactly what i mean. the difference is having a model class that represents a real-world application, vs using the Table class to make database updates. in your example there, Product(1) is getting a record set, and to insert, one needs to explicit work with the Table object. i'd like to create a class that represents one specific product, and have a easy way to save an instance of that class into the database. i've been reading this thread: https://groups.google.com/forum/?fromgroups=#!searchin/web2py/web2py$20vs$20World/web2py/KgzKryAEIGw/pTMR_ZuZoJwJ i think their conclusion at the end is fairly close to what i'm trying to do. i was just wondering if there's a better way about it than how i've done it. thanks for your fast response. tom On Wednesday, November 14, 2012 7:01:34 AM UTC-5, viniciusban wrote: > > You may implement this getting your table fields and checking if your > class has this attribute with hasattr() (it's a Python builtin > function). It should be done in a upper level class, who you should > extend. > > But, maybe you're missing that DAL does exactly what you mean: this > mapping between your database physical fields and your properties. > > Maybe you could achieve that simply doing this: > >>> Product = db.define_table('product', ...) # all your define_table. > > From now on, you can do: > >>> p = Product(1) > >>> Product.price = 100 > >>> Product.name = 'aaa' > >>> Product.update_or_insert() > > -- > Vinicius Assef > > > On Wed, Nov 14, 2012 at 6:09 AM, tom h <dark...@gmail.com <javascript:>> > wrote: > > hi web2py gurus, > > > > just out of curiousity, i'd like to create a class (let's say Product) > that > > represents a record in my table "product". right now, i can't figure > out > > how to have the class attributes (p = Product(); p.price) saved to the > > database without internally having p.__fields_dict__ containing ONLY > table > > fields, and then map the p.price to p.__fields_dict__['price'], and > finally > > doing something like p.db['product'].insert(p.__fields_dict__). > > > > i'm just wondering if there's any better way to do this, sorry i'm > pretty > > new to Python as well and probably am missing something. > > > > ideally, i'd like something that's more like: > > > > p = Product(id=1) or Product() > > p.random_var = 'abc' > > p.name = 'a' > > p.price = 100.0 > > p.save() # or db['product'].update_or_insert(p) > > > > thanks a lot! > > tom > > > > -- > > > > > > > --