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). >>> >> -- > > > > --

