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