大家好和CouchDB的利弊,使用couchdb.mapping,無法設置屬性
我有一個映射設置像這樣:
class Product(BaseModel):
name= mapping.TextField()
returned = mapping.DictField(mapping.Mapping.build(
reason = mapping.TextField(),
put_back = mapping.BooleanField()
))
我有一個叫getById函數,它的ID,並返回通過產品:
return Product.load(db, id)
我有一個問題:當我打開一個特定的產品,並嘗試設置返回的字典像這樣:
product = Product.getById("123")
product.returned
>>> {}
product.returned['reason'] = "Test"
product.returned
>>> {}
注意: 我只是最近修改模型有「返回」鍵。使用getById獲得的舊產品對象沒有「返回」鍵。這會有所作爲嗎?它不應該是正確的,畢竟這是一個文檔數據庫,它應該是靈活的嗎?
爲什麼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不允許你在使用先前映射模型創建的文檔中「創建」新的鍵。您必須首先手動將所需的密鑰添加到所有文檔,然後才能爲其設置值。 – Mark 2012-01-20 05:42:12