2012-04-06 2 views
0

두 모델이 있습니다 (예 : QuestionTopic).Django 맞춤 관리자 클래스에서 다른 모델 관리자 코드 사용

Question 모델의 맞춤 관리자에 메소드를 추가하려고합니다. 어떤 방법은 Topic에 의해 필터링합니다.

클래스 TopicManager

def my_feed(self, user): 
     topics = TopicManager().filter(user=user) # 1st approach 
     #topics = Topic.objects.filter(user=user) # 2nd line 
     # do something with topics 

class QuestionManager에서 나는 (수 없습니다 import Topic 중 하나, 그래서 나는 Topic.objects... 할 수 없습니다)이 대한 다른 관리자의 코드를 사용할 수없는 것 ....

것은 첫째 접근 방식을 사용하여, 나는 다음과 같은 오류 얻을 :

virtualenv/local/lib/python2.7/site-packages/django/db/models/sql/query.pyc in get_meta(self) 
    219   by subclasses. 
    220   """ 
--> 221   return self.model._meta 
    222 
    223  def clone(self, klass=None, memo=None, **kwargs): 

AttributeError: 'NoneType' object has no attribute '_meta' 

토픽은이 파일의 TopicManager에 따라 다르므로 토픽을 가져올 수 없으므로 두 번째 줄을 사용할 수 없습니다. 이 문제를 해결할 수있는 방법이 있습니까?

답변

3

어떤 경우에도 관리자를 직접 사용할 수 없습니다. 모델 클래스를 통해 항상 액세스합니다.

원형 종속성으로 인해 파일의 맨 위에 모델을 가져올 수없는 경우 해당 모델을 메서드 내로 간단히 가져올 수 있습니다.

+0

내부 메소드를 가져올 때 성능이 저하 될 수 있습니까? 모든 포인터는 감사하겠습니다. – ustun

+1

성능에 영향이 없습니다. –