2012-04-10 13 views
0

私は、各オブジェクトを通過した場合に反復処理したいこのジャンゴ: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 
関連する問題