1

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

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

谢谢!

4

1 回答 1

0

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

内部 mongoengine 使用类注册表,通过 Document 元类填充。不幸的是,命名空间与 java 世界中的命名空间不同(我从没想过我会这么说!)据我所知,它不可能确定一个类的完整位置名称,例如:myapp.models.User

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

于 2013-01-23T08:54:15.330 回答