我有两个模块,如:
- 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:无法导入名称实体
我应该如何重组我的代码?
您对此解决方案有何看法?可以吗?
class Entity(models.Model):
//model definition
def someMethod(self):
from myapp.filters import EntityFilter
entities = EntityFilter(...)
工作正常......
答案 0 :(得分:0)
你试过这个吗?
from myapp.models import Entity
class EntityFilter(django_filters.FilterSet):
class Meta:
model = 'Entity'
// ...
答案 1 :(得分:0)
您用来解决问题的方法很好,在我看过的python代码中很常见(至少在无法避免循环依赖时;它也是为了避免过度污染全局命名空间)当没有任何循环依赖关系时要担心)。有关导入语句如何在python中工作的详细描述,以及解决问题的原因,请参阅本网站,在@mata评论中注明的“Python中的循环依赖”问题的答案中引用:{{ 3}}