在mongoengine的双向关系

时间:2013-01-23 00:33:38

标签: python django mongoengine

我需要在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,尽管集合中的记录应该属于自定义用户类)

那么有什么方法可以在那里指定一个完全限定的类名吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

在这种情况下,您需要在Notification类之后声明User类。

内部mongoengine使用类注册表,该注册表通过Document元类填充。不幸的是,命名空间与java世界不同(我从未想过我会这么说!)因此,据我所知,它无法确定类的完整位置名称,例如:myapp.models.User < / p>

您使用的是django User类吗?以及另一个User类 - 这将导致注册表出现问题,因为目前每个名称只能有一个类。