如何保存与字典类型的对象键有值

问题描述 投票:0回答:1

我想保存使用pymongo MongoDB中的对象。我打电话的API,它给了我和对象并通过对象上迭代,我能够得到字段和值。但问题是,有可能是某些字段,其值也是一个对象,当我试图存储这样的Fileds在MongoDB中我收到错误。

误差是文档必须是字典,bson.son.SON,bson.raw_bson.RawBSONDocument的实例,或者来自collections.MutableMapping继承的类型

models.朋友

class UnusedResources(Document):
    field1 = fields.StringField(max_length=20)
    field2 = fields.DictField()

蟒蛇壳

object = API   #calling api
d = dict()

d['field1'] = None
d['field2'] = object.__dict__  #converted all fields of object into dict and stored in d['field2']

client = MongoClient('127.0.0.1', 27017)
db = client.CESdatabase
collection = db.registration_unusedresources
collection.insert_one(d)

内部对象字段

{
 'additional_properties': {}, 
 'id': '/subscriptions/XXX/resourceGroups/auth-user-api/providers/Microsoft.Network/loadBalancers/XXX', 
 'name': 'XXX',  
 'sku': <azure.mgmt.network.v2018_11_01.models.load_balancer_sku_py3.LoadBalancerSku object at 0x0000000004E05D30>,
 'probes': [<azure.mgmt.network.v2018_11_01.models.probe_py3.Probe object at 0x0000000004E05DA0>], 
 'inbound_nat_rules': [], 
 'inbound_nat_pools': [], 
 'outbound_rules': None
}
django python-3.x pymongo mongoengine
1个回答
1
投票

你在你的API响应有azure.mgmt.network.v2018_11_01.models.load_balancer_sku_py3.LoadBalancerSkuazure.mgmt.network.v2018_11_01.models.probe_py3.Probe的一个实例。这是蒙戈不能存储(这是正确的)东西。您需要确定要如何序列化的为好。

© www.soinside.com 2019 - 2024. All rights reserved.