我需要在Mongoengine中使用双向关系,如下所示。
from mongoengine import *
class Notification(Document):
desc = StringField()
from_user = ReferenceField('User')
class User(Document):
Name = StringField()
notifications = ListField(EmbeddedDocumentField(Notification))
我知道当类尚未定义时,我们可以将单引号类名称放在那里。
from_user = ReferenceField('User')
然而,我们在这里遇到了问题。好像在运行时它将我们的类解释为mongoengine.django.auth.user而不是我们的自定义用户类。 (这正是我猜的,但在调试模式的运行时,我发现它将它误解为mongoengine.django.auth.user,尽管集合中的记录应该属于自定义用户类)
那么有什么方法可以在那里指定一个完全限定的类名吗?
谢谢!
答案 0 :(得分:0)
在这种情况下,您需要在Notification类之后声明User类。
内部mongoengine使用类注册表,该注册表通过Document元类填充。不幸的是,命名空间与java世界不同(我从未想过我会这么说!)因此,据我所知,它无法确定类的完整位置名称,例如:myapp.models.User < / p>
您使用的是django User类吗?以及另一个User类 - 这将导致注册表出现问题,因为目前每个名称只能有一个类。