【发布时间】:2019-12-09 15:22:13
【问题描述】:
我已经用 mongodb 实现了一个简单的烧瓶应用程序,现在需要一些升级。
假设有一个 Foo 的类模型和一个 Bar 的类模型,其中有一个 Foo 的引用字段
class Foo(Document):
title = StringField()
class Bar(Document):
name = StringField()
foo = ReferenceField('Foo')
让烧瓶应用程序运行一段时间,这样现在数据库中有一些数据。
由于需求变化,我们需要重构 Foo 类,从一个新的超类继承它:
class SuperFoo(Document):
meta = { 'allow_inheritance': True,}
#[...]
class Foo(SuperFoo):
#[...]
class Bar(Document):
name = StringField()
foo = ReferenceField('Foo')
上面的代码适用于空数据库。
但是如果其中有一些数据,当烧瓶管理员尝试显示 Bar 实例(在编辑模式下)时,mongoengine 会引发异常
File "[...]/site-packages/mongoengine/fields.py", line 1124, in __get__
raise DoesNotExist('Trying to dereference unknown document %s' % value)
mongoengine.errors.DoesNotExist: Trying to dereference unknown document DBRef('super_foo', ObjectId('5617a08939c6c70cbaa2af6e'))
我想数据模型需要以某种方式迁移。
怎么做?
谢谢, 亚历山德罗。
【问题讨论】:
标签: python mongoengine flask-admin flask-mongoengine