0

次のような 2 つのモジュールがあります。

--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 に答える