Found it...
You should not use 'get' as a fieldname. if you change 'db.test.get' to 'db.test._get' or something else, it will work. or you can use: db.test[1]['get']() instead of db.test[1].get() Marin On Sat, Aug 25, 2012 at 6:35 PM, Marek Mollin <[email protected]> wrote: > I missed the table name alright. > But lazy fields wont be called internally... > so row.tablename.fieldname will return a function rather than value... > > W dniu sobota, 25 sierpnia 2012 18:29:00 UTC+2 użytkownik Marin Pranjić > napisał: >> >> You don't have to call .get() >> It will be called internally with a row as an argument. >> >> And you should be using row.tablename.fieldname (instead just >> row.fieldname) >> >> Marin >> >> On Sat, Aug 25, 2012 at 6:20 PM, Marek Mollin <[email protected]> wrote: >> >>> Still not working. >>> When I add static I can do: >>> >>> >> Test.get(db.test[1]) >>> >> 'testobject' >>> >>> This is fine. >>> But I cant do db.test[1].get() as it gives me TypeError - expected at >>> least 1 argument. >>> I thought that if something is defined as Field.Lazy that function >>> automatically gets row as first argument. I mean that's how it works >>> normally with regular functions. >>> >>> >>> W dniu sobota, 25 sierpnia 2012 17:47:14 UTC+2 użytkownik Anthony >>> napisał: >>> >>>> Perhaps you want to use static methods: >>>> >>>> class Test(object): >>>> @staticmethod >>>> def get(row): >>>> return row.name >>>> >>>> Anthony >>>> >>>> On Saturday, August 25, 2012 11:33:06 AM UTC-4, Marek Mollin wrote: >>>>> >>>>> Hello, >>>>> >>>>> I have a problem with a construct like that: >>>>> db.define_table('test', >>>>> Field('name'), >>>>> ) >>>>> >>>>> >>>>> class Test(object): >>>>> def get(row): >>>>> return row.name >>>>> def get_hello(row, greeting): >>>>> return '%s %s' % (greeting, row.name) >>>>> >>>>> >>>>> db.test.get = Field.Lazy(Test.get) >>>>> db.test.get_hello = Field.Lazy(Test.get_hello) >>>>> >>>>> Why it would not work ? >>>>> It works perfect if its a standard function. But if its unbound method >>>>> I get TypeError expected at least 1. >>>>> >>>>> I am trying to do that in order to better organize models, I do not >>>>> want to go as far as Bruno's modelless aproach as performance is not the >>>>> issue but overtime they become messy. (Also I know that I can just make >>>>> seperate file, but then I have to add number to the file and again it >>>>> becomes very unclean). >>>>> >>>>> The whole deal is to move at least some of the logic to those Lazy >>>>> fields (its a pain to have fat controllers). >>>>> >>>> -- >>> >>> >>> >>> >> >> -- > > > > --

