データベース用にMongoEngineを使用するPython/Flaskアプリケーションがあります。私は自分のモデルを定義しており、最新のモデルが追加されるまですべてが機能していました。両方のモデルがお互いを参照し、再帰的なインポートループを引き起こしているため、この問題が発生すると思います。私はそれを解決するために何をすべきか分かりません。これはお互いを参照するモデルがたくさんある大きなプロジェクトになるでしょう。この特定のインスタンスは、ユーザーがプラクティスにあり、プラクティスにユーザーがあるため、多対多の関係です。Python再帰インポートの問題
ユーザーモデル
from utilities.common import utc_now_ts as now
from mongoengine import *
from models.practice import Practice
class User(Document):
name = StringField()
created = IntField(db_field="cr", default=now)
practices = ListField(ReferenceField(Practice))
と実践モデル
from utilities.common import utc_now_ts as now
from mongoengine import *
from models import user
class Practice(Document):
name = StringField()
created = IntField(db_field="cr", default=now)
users = ListField(ReferenceField(user.User))
admins = ListField(ReferenceField(user.User))
私が手にエラーは、私は同じ問題に実行されている2つの他のモデルを持っているImportError: cannot import name 'Practice'
です。モデルは、他のモデルへのインポートで追加するまで正常に機能しました。
再帰的に参照される理由はありますか?この問題を解決する最良の方法は、依存関係の1つを削除するためのモデルリファクタである可能性が最も高いです。 –
変更方法を教えてもらえますか?私はモデルごとにユーザーのリストを用意する必要があり、ユーザーごとにグループのリストを用意する必要があります。これは、トピックを検索したときに人々が推奨する方法でした。 – Jhorra