自引用Python对象MongoDB架构
我要达到什么目的?
我正在尝试创建的程序可以处理描述杂货产品类别的数据,例如:牛奶,牛肉,玉米,当地水果等。我计划将此数据存储在 MongoDB 实例中,因此创建 schema 会很好。
我遇到问题的原因是类别具有子类别(乳制品:牛奶,奶酪,酸奶;肉类:牛肉,猪肉等),导致产生递归对象。
Python单独
我研究了StackOverflow,该如何在Python中处理这种结构。
class Category():
def _init_(self,name,amount,subcategories = ()):
self.name = name
self.amount = amount
for subcategory in subcategories:
assert isinstance(subcategory,Category)
self.subcategories = subcategories
这似乎是正确的...
模式部分
...但是直到我尝试将其绑定到架构中为止:
class Category(mongoengine.EmbeddedDocument):
def _init_(self,Category)
self.subcategories = subcategories
name = mongoengine.StringField(required=True)
amount = mongoengine.FloatField(required=True)
subcategories = mongoengine.EmbeddedDocumentListField(Category,default=None)
meta = {
'db_alias': 'core','collection': 'category','indexes': [
'name','amount','subcategories',],'ordering': ['-name']
}
运行此代码会导致错误:
subbcategories = mongoengine.EmbeddedDocumentListField(Category,default = None)NameError:名称'Category'未定义
我尝试引用父类别,而不是嵌入子类别:
parent_category = mongoengine.ObjectIdField(Category,default=None)
但是我仍然得到完全相同的错误消息:
parent_category = mongoengine.ObjectIdField(Category,default = None)NameError:名称'Category'未定义
问题本身
如何为这样的递归对象定义模式?有可能吗?