Python 正在使用couchdb.mapping,无法设置属性
大家好,couchdb专业人士 我有这样的映射设置:Python 正在使用couchdb.mapping,无法设置属性,python,couchdb,couchdb-python,Python,Couchdb,Couchdb Python,大家好,couchdb专业人士 我有这样的映射设置: class Product(BaseModel): name= mapping.TextField() returned = mapping.DictField(mapping.Mapping.build( reason = mapping.TextField(), put_back = mapping.BooleanField() )) product = Product.getById("123") prod
class Product(BaseModel):
name= mapping.TextField()
returned = mapping.DictField(mapping.Mapping.build(
reason = mapping.TextField(),
put_back = mapping.BooleanField()
))
product = Product.getById("123")
product.returned
>>> {}
product.returned['reason'] = "Test"
product.returned
>>> {}
我有一个名为getById的函数,它接受id并通过以下方式返回产品:
return Product.load(db, id)
我有一个问题:当我加载一个特定的产品,并尝试设置返回的字典如下:
class Product(BaseModel):
name= mapping.TextField()
returned = mapping.DictField(mapping.Mapping.build(
reason = mapping.TextField(),
put_back = mapping.BooleanField()
))
product = Product.getById("123")
product.returned
>>> {}
product.returned['reason'] = "Test"
product.returned
>>> {}
注意:
我最近才修改了模型,使其具有“returned”键。使用getById获取的旧产品对象中没有“returned”键。这会有所不同吗?它不应该是正确的,毕竟这是一个文档数据库,它应该是灵活的,对吗
为什么product.returned在设置“reason”属性后仍然返回空字典
我进行了一些调试,发现产品变量的形式如下:
<Product u'f90173026e859c65cfa08496115bf7bf'@u'11-3ea1135ceb6361631cbb08471d15df1e' {u'name': u'Printer', u'subProducts': [], u'company': {u'id': u'HP', u'name': u'Hewlett-Packard'}, u'productType':.......>
这是什么样的结果?它是查看结果还是文档
非常感谢您的帮助,谢谢
谢谢。我发现了问题。显然,couchdb python不允许您在使用以前的映射模型创建的文档中“创建”新键。在为所有文档设置值之前,您必须先手动添加所需的键。我发现了问题。显然,couchdb python不允许您在使用以前的映射模型创建的文档中“创建”新键。在为所有文档设置值之前,您必须先手动将所需的键添加到所有文档中。