我有一個使用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))
我得到的錯誤是ImportError: cannot import name 'Practice'
我有運行到同一問題的其他兩款車型。模型工作正常,直到我添加到另一個模型的進口。
是否有一個原因,他們是遞歸引用?解決此問題的最佳方法很可能是刪除其中一個依賴關係的模型重構。 –
你能告訴我如何改變它嗎?我需要爲每個模型提供一個用戶列表,並且我需要爲每個用戶列出一個組列表。這是我搜索該主題時人們推薦的方法。 – Jhorra