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

-- 



Reply via email to