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()

浙公网安备 33010602011771号