2012-04-06 92 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

相关问题