Python 正在使用couchdb.mapping,无法设置属性

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

大家好,couchdb专业人士

我有这样的映射设置:

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不允许您在使用以前的映射模型创建的文档中“创建”新键。在为所有文档设置值之前,您必须先手动将所需的键添加到所有文档中。