2012-04-10 71 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