django jsonfield字段更新的坑
简单json字段:{"name":"test", "age":30, "email":"tet@gmail.com"}, 可以通过obj.jsonfiledName["name"] ="test2", obj.save()方式可成功写入数据库;
复杂json字段如,更新number字段,需使用特殊的更新方式:https://django-postgres-extensions.readthedocs.io/en/latest/json.html; 或者单独处理obj.jsonfiledName = after_update_jsonfiledName, obj.save()
{ "name": "John Smith", "age": 30, "email": "john.smith@example.com", "address": { "street": "123 Main St", "city": "Anytown", "state": "CA", "zip": "12345" }, "phoneNumbers": [ { "type": "home", "number": "555-555-1234" }, { "type": "work", "number": "555-555-5678" } ] }
m_attrs = obj.module_attrs if bus_obj: for env in ['test', 'pre', 'prod']: # m_attrs[env]["kube_cluster"] = bus_obj.default_cluster if env == "test": m_attrs[env]["kube_cluster"] = bus_obj.test_cluster if env == "pre": m_attrs[env]["namespace"] = bus_obj.name_space m_attrs[env]["kube_cluster"] = bus_obj.pre_cluster if bus_obj.business_name in zhenai_biz: m_attrs[env]["profile"] = "qa" if bus_obj.business_name in crm_biz: m_attrs[env]["profile"] = "pre" if env == "prod": m_attrs[env]["namespace"] = bus_obj.name_space m_attrs[env]["kube_cluster"] = bus_obj.prod_cluster if bus_obj.business_name in z_biz: m_attrs[env]["profile"] = "online" if bus_obj.business_name in crm_biz: m_attrs[env]["profile"] = "prod" # if self.module_attrs[env]["kube_cluster"] == 'offline': # self.module_attrs[env]["logs"] = '/data/logs' obj.module_attrs = m_attrs obj.save()