2009-05-22 17 views
0

Ich bin ein Neuling in Django. Ich habe ein Modell mit einer benutzerdefinierten Methode. In Sicht bin ich Abruf eines einzelnen Objekts.Kann benutzerdefinierte Methode nicht aufrufen

Hier ist mein Code - Mein Modell

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('/') 

im Hinblick ich diesen

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

Aber ich erhalte diesen Fehler 'Problem' Objekt hat kein Attribut 'retrieve_rankdata' tue

Was mache ich falsch?

Antwort

1

Es ist ein bisschen schwer zu sagen, aber das Problem könnte mit Ihrer Einrückung sein. Der Einzug in den Code, den Sie eingefügt haben, ist inkonsistent, so dass es sowieso nicht richtig funktionieren würde - ich vermute, in Ihrem tatsächlichen Code ist def retrieve_rankdata ein paar Leerzeichen mehr auf der linken Seite.

Vergessen Sie nicht, dass Python einen Einzug verwendet, um festzustellen, ob ein Attribut oder eine Methode Teil einer Klasse ist. Wenn also Ihre def retrieve_rankdata Zeile nicht auf der gleichen Ebene wie die def __unicode__ eingerückt ist, wird sie nicht als Teil der Problem Klasse betrachtet.

+0

definitiv hier falsch eingerückt ... gutes Auge. –

+0

Mann, du warst rite.wasted so viel Zeit.Ich benutzte Notepad ++. Dann, bearbeitet mit IDLE, und es zeigte das Einzugsproblem. – kost

Verwandte Themen