Pymodm:ImportError(两个模型互相引用)
Pymodm: ImportError (Two models referencing each other)
我正在使用 Flask 和 mongoDB 以及 Pymodm 作为 ODM 编写待办事项应用程序。
我有两个名为 User 和 UserGroups 的模型。这两个像这样互相引用:
user.py
from api.models.userGroup import group
class User(MongoModel):
_id = fields.IntegerField(primary_key=True)
email = fields.CharField()
password = fields.CharField()
createdAt = fields.DateTimeField(default=datetime.datetime.now())
groups = [fields.ReferenceField('group')]
personalTodoLists = fields.EmbeddedDocumentListField('list')
userGroup.py
from api.models.user import user
class UserGroup(MongoModel, EmbeddedMongoModel):
_id = fields.IntegerField(primary_key=True)
name = fields.CharField()
createdAt = fields.DateTimeField(default=datetime.datetime.now())
ownerId = fields.ReferenceField('user')
contributors = [fields.ReferenceField('user')]
todoLits = fields.EmbeddedDocumentListField('list')
我收到错误:"ImportError: cannot import name 'user'"
在这种情况下如何正确引用?
循环引用是多对多关系的常见问题。包实现的通常解决方案是为您提供一种使用带有名称的字符串而不是对象本身来引用(尚未定义)其他模型的方法。
我看得出来你就是这么做的,真的。例如:
groups = [fields.ReferenceField('group')]
那么您应该不需要实际 导入 那些模型。只需评论 out/remove 有问题的导入行,它应该可以工作。
我正在使用 Flask 和 mongoDB 以及 Pymodm 作为 ODM 编写待办事项应用程序。 我有两个名为 User 和 UserGroups 的模型。这两个像这样互相引用:
user.py
from api.models.userGroup import group
class User(MongoModel):
_id = fields.IntegerField(primary_key=True)
email = fields.CharField()
password = fields.CharField()
createdAt = fields.DateTimeField(default=datetime.datetime.now())
groups = [fields.ReferenceField('group')]
personalTodoLists = fields.EmbeddedDocumentListField('list')
userGroup.py
from api.models.user import user
class UserGroup(MongoModel, EmbeddedMongoModel):
_id = fields.IntegerField(primary_key=True)
name = fields.CharField()
createdAt = fields.DateTimeField(default=datetime.datetime.now())
ownerId = fields.ReferenceField('user')
contributors = [fields.ReferenceField('user')]
todoLits = fields.EmbeddedDocumentListField('list')
我收到错误:"ImportError: cannot import name 'user'"
在这种情况下如何正确引用?
循环引用是多对多关系的常见问题。包实现的通常解决方案是为您提供一种使用带有名称的字符串而不是对象本身来引用(尚未定义)其他模型的方法。
我看得出来你就是这么做的,真的。例如:
groups = [fields.ReferenceField('group')]
那么您应该不需要实际 导入 那些模型。只需评论 out/remove 有问题的导入行,它应该可以工作。