我正在使用flask和mongoDB和Pymodm作为ODM编写todo应用程序。 我有两个名为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:无法导入名称'user'”
在这种情况下,如何正确进行引用?
答案 0 :(得分:0)
循环引用是多对多关系中的常见问题。这些软件包实施的通常解决方案是为您提供一种使用具有名称的字符串而不是对象本身来引用(尚未定义)其他模型的方法。
我可以看到实际上是您所做的。例如:
groups = [fields.ReferenceField('group')]
那么,您实际上不需要导入那些模型。只需注释掉/删除有问题的导入行,它就可以工作。