2011-04-20 5 views
0

장고에서 모델 관리자에 대한 두 가지 사용자 지정 방법이 있습니다. 그들 중 하나가 작동합니다. 나는 최근에 또 다른 장고 (그리고 파이썬)가 존재하지 않는 것처럼 그것을 추가했다. 내가 (장고 개발 서버를 실행하는) 웹 사이트에 오류가Django 사용자 정의 메서드가 표시되지 않습니다

class FigureServerManager(models.Manager): 
    #This method takes as input a user and grabs a figure that is not marked complete for which that user has not already submitted a result 
    def serve_to_user(self,user): 
    not_complete=super(FigureServerManager, self).get_query_set().filter(complete=0) 
    for Figure in not_complete: 
     checkifresult=User.objects.get(pk=user).result_set.all().filter(figure=Figure.id) 
    if not checkifresult: 
      return Figure 

    #This is a copy of the above method that I want to change to do something else, but I can't even get it to show up yet 
    def serve_training_task(self, user): 
     with_correct_ans=super(FigureServerManager, self).get_query_set().filter(complete=0) 
     for Figure in with_correct_ans: 
      checkifresult=User.objects.get(pk=user).result_set.all().filter(figure=Figure.id) 
     if not checkifresult: 
       return Figure 

class Figure(models.Model): 
    doi=models.CharField(max_length=20) 
    url=models.CharField(max_length=200) 
    image=models.ImageField(upload_to='classify') 
    complete=models.BooleanField() 
    #include the default manager  
    objects=models.Manager() 
    #add the extra one for serving figures 
    serve_objects=FigureServerManager() 

이 같은 : 여기에 모델의 관련 부분

'FigureServerManager' object has no attribute 'serve_training_task' 

와 나는 파이썬의 디렉토리 (FigureServerManager)를 실행하는 경우 serve_training_task 메소드가 나타나지 않지만 serve_to_user 메소드가 나타납니다. serve_training_task가 작동하지 않는 이유는 무엇입니까?

+1

일반적으로 나쁜 생각 인 탭과 공백이 혼합되어 있습니다. – DTing

답변

6
+0

백만 시간에 예! – myusuf3

+0

작업 코드의 선행 공백을 복사하여 비 작동 코드에 붙여 넣었습니다. 감사. 나는 이것을 gedit에 쓰고있다. (초보자, 너는 말할 수 있냐?) - 이런 문제에 대해 알려주는 비주얼 큐가있는 곳에서 파이썬을 작성하는 더 좋은 방법이 있을까요? 지금 그것은 나에게 완전히 불투명하다. – andy

+0

불행히도 편집인은 심령술자가 아니며 모듈 수준의 기능 대 메서드를 의미한다는 것을 알 수 있습니다. 이것은 당신이 시간이 지남에 따라 경험을 쌓아야 할 것입니다. –

관련 문제