在MongoEngine中实现双向关系
我正在构建一个使用MongoDB和MongoEngine来存储数据的Django应用程序。为了呈现我的问题的简化版本,我想要有两个类:User和Page。每个页面应该与用户和每个用户关联页面。
from mongoengine import *
class Page(Document):
pass
class User(Document):
name = StringField()
page = ReferenceField(Page)
class Page(Document):
content = StringField()
user = ReferenceField(User)
(请注意,必须在User之前定义Page。如果我缺少处理循环依赖关系的Pythonic方法,请告诉我。)每个文档都可以创建并保存得很好,但是为用户分配页面会引发错误。
u = User(name='Jeff')
u.save()
p = Page(content="I'm a page!")
p.save()
p.user = u
p.save()
u.page = p
u.save()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "buildbdist.win32eggmongoenginedocument.py", line 71, in save
File "buildbdist.win32eggmongoenginebase.py", line 303, in validate
mongoengine.base.ValidationError: Invalid value for field of type "ReferenceField"
任何人都可以解释为什么抛出这个异常,我做错了什么,以及如何避免它?
没有找到相关结果
已邀请:
2 个回复
戊袱
使用单引号('Page')表示尚未定义的类。
抚驰
但同样,对于您的具体问题,请使用单引号中的类名称。