Python `NotRegistered`使用多重继承时出现异常
这真令人沮丧 下面是我的文档定义,为了使子类文档继承自基类,我遵循了以下建议: 型号/thread.pyPython `NotRegistered`使用多重继承时出现异常,python,pymongo,mongoengine,Python,Pymongo,Mongoengine,这真令人沮丧 下面是我的文档定义,为了使子类文档继承自基类,我遵循了以下建议: 型号/thread.py class Thread(object): meta = { 'allow_inheritance': True } models/forum.py from models.thread import Thread from mongoengine import Document class ForumThread(Document, Thread):
class Thread(object):
meta = {
'allow_inheritance': True
}
models/forum.py
from models.thread import Thread
from mongoengine import Document
class ForumThread(Document, Thread):
meta = {
'collection': 'forum_threads'
}
models/group.py
from models.thread import Thread
from mongoengine import Document
class GroupThread(Document, Thread):
meta = {
'collection': 'group_threads'
}
当我尝试这种事情时,我得到了未注册的
>>> from models.forum import ForumThread
>>> print ForumThread.objects().first()
>>> NotRegistered: `Thread` has not been registered in the document registry.
Importing the document class automatically registers it, has it
been imported?
任何帮助/建议都将不胜感激。我不确定线程是否需要meta
,或者尝试使用抽象基类[1]
class Thread(Document):
meta = {
'abstract': True
}
class ForumThread(Thread):
meta = {
'collection': 'forum_threads'
}
class GroupThread(Thread):
meta = {
'collection': 'group_threads'
}
[1] 是否导入了线程
?我已更新了我的问题,以更清楚地说明问题。在尝试查询时,这给了我一个关键错误:“id\u字段”。我只需要一个地方来定义线程字段,以及一种在多个集合中表示线程的方法。是否需要在所有抽象类上设置id\u字段
meta属性?在将其添加到线程时。uuu meta_uuudict,我不再能够访问mongoengine文档\u id
字段作为代码中的id
。我还尝试将线程。u meta['id\u field']设置为id
和\u id
无效。我们所有的文档都有一个\u id
字段。感谢罗斯的帮助。现有文档上的\u cls
字段就是问题所在。