0

我有两个模块,如下所示:

--models.py

from myapp.filters import EntityFilter
class Entity(models.Model):
   //model definition

   def someMethod(self):
      entities = EntityFilter(...)

--filters.py

from myapp.models import Entity
class EntityFilter(django_filters.FilterSet):
    class Meta:    
        model = Entity
        // ...

显然我得到了错误ImportError: cannot import name Entity

我应该如何重新组织我的代码?

您如何看待这个解决方案?可以吗?

class Entity(models.Model):
   //model definition

   def someMethod(self):
      from myapp.filters import EntityFilter
      entities = EntityFilter(...)

它工作正常...

4

2 回答 2

0

您用来解决问题的方法很好,并且在我见过的 python 代码中很常见(至少在无法避免循环依赖时;这样做也是为了避免过度污染全局命名空间时有不需要担心任何循环依赖)。有关 import 语句如何在 python 中工作的良好描述,以及为什么您的解决方法解决了该问题,请参阅此站点,在上面@mata 的评论中提到的“Python 中的循环依赖”问题的答案中引用:http: //effbot.org/zone/import-confusion.htm

于 2013-04-26T13:57:52.450 回答
0

你有没有尝试过这样做?

from myapp.models import Entity
class EntityFilter(django_filters.FilterSet):
    class Meta:    
        model = 'Entity'
        // ...
于 2013-04-26T13:01:40.423 回答