2009-05-22 27 views
0

私はDjangoで初心者です。私はカスタムメソッドでモデルを持っています。私は という単一のオブジェクトを取得しています。ここでカスタムメソッドを呼び出せません

私のコードです - 私のモデル

class Problem(models.Model): 
    problem = models.CharField(max_length=100) 
    solution=models.CharField(max_length=500) 
    def __unicode__(self): 
     return self.problem 
    def retrieve_rankdata(self): 
       return self.problem.split()[0].split('/') 

は、ビューに私はこの

def show(request): 
     problem = Problem.objects.all()[0] 
     t1=problem.retrieve_rankdata() 

をしています。しかし、私はこのエラー 「問題」オブジェクトが属性「retrieve_rankdata」がありません取得しています

私は間違っていますか?

答えて

1

伝えるのは少し難しいですが、問題はインデントで発生する可能性があります。貼り付けたコードのインデントが矛盾しているため、とにかく正しく動作しません。実際のコードではdef retrieve_rankdataは左に2スペース余りあります。

属性やメソッドがクラスの一部であるかどうかをPythonがインデントしていることを忘れないでください。したがって、def retrieve_rankdata行が実際にdef __unicode__と同じレベルでインデントされていない場合は、Problemクラスの一部とは見なされません。

+0

ここで間違ったところに間違ってインデントされています。 –

+0

あなたは礼儀正しくありました。私はメモ帳を使っていました。そして、IDLEを使って編集し、インデントの問題を示しました。 – kost

関連する問題