У меня есть приложение Python/Flask, которое использует MongoEngine для базы данных. Я определил свои модели, и все работало до тех пор, пока не были добавлены новейшие модели. Я считаю, что проблема возникает из-за того, что обе модели ссылаются друг на друга и вызывают рекурсивный цикл импорта. Я не уверен, что делать, чтобы решить это. Это будет большой проект с множеством моделей, ссылающихся друг на друга. Этот конкретный пример заключается в том, что пользователи работают в практике, а практика имеет пользователей, поэтому это отношения многих и многих.Рекурсивная проблема импорта 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