2012-04-10 3 views
0

나는 각각의 개체를 통해 경우 반복 할이장고 : 장고 모델에서 메서드 호출

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

당신이 방법은 실제로 클래스 __getattr__을 무시하고 단지 파이썬이 나머지를 할 수 있도록하는 것입니다 그렇게 할 수있는 최선의가 있지만 알고 hasattr(obj, 'get_'+fieldname)를 호출 할 수 있습니다 : 아래 의사 코드입니다.

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