2014-10-20 6 views
0

나는 장고에 새로운 조용하고 나는 ASP.Net 배경에서 왔어.보기에서 클래스 메서드를 호출

웹 응용 프로그램 중 하나에서 OOP 개념을 달성하려고합니다.

나는 영화 목록을

url.py을 유지하는 모델을 가지고

from movies import views 

url(r'^recent/$', views.recentlyadded) 

나는 기반으로 영화 제목을 반환하려고

from django.db import models 

class MovieManager(models.Model): 
    def title_count(self, keyword): 
     return self.filter(title__icontains=keyword).count() 

class Movie(models.Model): 
    movieid = models.AutoField(primary_key=True) 
    title = models.CharField(max_length=250) 
    objects = MovieManager() 

models.py 맞춤 관리자 MovieManager를 사용하는 키워드에

views.py

from movies.models import Movie 

def recentlyadded(request): 
    r = Movie.objects.title_count('night') 
    return HttpResponse("test") 

이 오류 AttributeError가 발생합니다 : '관리자'개체가 어떤 속성 'title_count'

어떻게 recentlyadded view.py 기능의 방법 models.py 호출이 없다?

여러 개의보기/함수에서 recentadded() 메서드를 사용하고 싶습니다.

답변

1

보기 코드는 정확하지만 모델 MovieManagermodels.Model이 아니라 models.Manager에서 상속해야합니다. 명시 적으로 선언 된 Manager을 찾지 못하면 메타 클래스는 기본 관리자로 Movie.objects을 덮어 씁니다.

FWIW Movie.objects을 파이썬 셸로 (또는 django.db.models.base.ModelBase의 소스 코드를 읽어서) 검사하여 직접 알 수있었습니다.

+0

내가 당신과 동의 모델 파일이 좀 더주의 깊게 읽을 수 있었다는 것을 나는 확실히 다음부터는 조심하면 당신은 아마이 하나를

마지막에 그것을 수행 model.py 파일이있을 것입니다. –

1

영화 제목을 반환합니다.

def __unicode__(self): 
    return self.title 
관련 문제