在 Django 自定义管理器类中使用另一个模型管理器的代码

ust*_*tun 2 django django-orm django-managers

我有两个模型,比如说,QuestionTopic

我正在尝试向 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
Run Code Online (Sandbox Code Playgroud)

类 TopicManager ....

使用第一种方法,我收到以下错误:

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'
Run Code Online (Sandbox Code Playgroud)

我不能使用第二行,因为我不能导入 Topic,因为 Topic 依赖于这个文件中的 TopicManager。有解决方法吗?

Dan*_*man 5

在任何情况下,您都不能直接使用经理。您总是通过模型类访问它。

如果由于循环依赖而无法在文件顶部导入模型,则可以简单地将其导入到方法中。