mongoengine双向参考如何?

时间:2015-03-06 09:28:13

标签: python mongodb reference mongoengine bidirectional

鉴于以下代码:

from mongoengine import *

connect('spike_bidirectional')

class User(Document):
    name = StringField()
    page = ListField(ReferenceField('Page'))

class Page(Document):
    content = StringField()
    user = ReferenceField(User)

u = User(name="Test User").save()
p = Page(content="Page 1", user=u).save()
p2 = Page(content="Page 2", user=u).save()

u.reload()
p.reload()
x = u.pages

x始终为空。数据库本身看起来很不错。有没有办法直接从用户访问与userobject相关的所有页面?

如果可以进行双向连接,我想知道在数据模型中定义拥有和引用站点的规则是什么。属性的名称本身是否相关?

1 个答案:

答案 0 :(得分:0)

您使用的是哪种版本的Mongoengine?我相信0.8及以上版本不会取消引用,除非你明确告诉它。

创建测试数据库并尝试对模型进行以下更改。

page = ListField(ReferenceField(Page, dbref=True))

user = ReferenceField(User, dbref=True)

我没有测试过,首先我会检查并确定正在使用的Mongoengine版本。