2012-04-06 27 views
0

我有兩個模型,比如QuestionTopic在Django自定義管理器類中使用另一個模型管理器的代碼

我正在嘗試向Question模型的自定義管理器添加方法,例如,一些按Topic過濾的方法。

我似乎無法使用其他經理的代碼爲這個(不能import Topic要麼,所以我不能做Topic.objects...

class QuestionManager

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

類TopicManager ....

使用1的方法,我得到以下錯誤:

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' 

我無法使用第二行,因爲我無法導入Topic,因爲Topic取決於此文件中的TopicManager。有沒有解決方法?

回答

3

在任何情況下都不能直接使用管理員。你總是通過模型類訪問它。

如果由於循環依賴性導致無法將文件導入到文件頂部,只需將其導入到方法中即可。

+0

什麼是導入內部方法的性能打擊?任何指針將不勝感激。 – ustun 2012-04-06 11:51:15

+1

沒有性能問題。 – 2012-04-06 11:53:05

相關問題