2012-04-10 129 views
0

我有这样Django的:在Django模型方法调用

class User(model): 
    username = XXX 
    addr1 = xxx 

def get_username(self): 
    return self.username + 'some message' 

def get_addr1(self): 
    return self.addr1 + 'some string' 

和代码我想通过每一个对象,如果要迭代的模型的get_功能+ field.name存在,那么调用该方法,否则返回领域本身。

有没有办法做到这一点?下面是伪代码:

for field in each_obj._fields.itervalues(): 
    if get_+fieldname exists then: 
     return that function call 
    else: 
     return self.field.name 

回答

0

你可以叫hasattr(obj, 'get_'+fieldname)知道,如果该方法是存在的,但最好这样做是真正覆盖类__getattr__,只是让Python的做休息。

0
for var in obj.__dict__: 
    try: 
     print getattr(obj, 'get_%s' %var)() 
    except(AttributeError): 
     print var