仅当新值不是 None 时才更新字段
Update fields only when new value is not None
我想根据 PUT 请求修改文档。但是,请求中的一些值是 None 并且最终取消了文档中的设置值。我如何更新具有值的字段,同时保留未设置的字段?
class getUnit(restful.Resource):
def put(self,unit_id):
args = parser.parse_args()
unit = Unit.objects.get_or_404(id=unit_id)
unit.modify(block_number=args["block_number"], street_name=args["street_name"], postal_code=args["postal_code"], city=args["city"], country=args["country"], coordinates=args["coordinates"], price=args["price"], num_rooms=args["num_rooms"], sqft=args["sqft"])
return jsonify(result = unit)
我尝试遍历每个参数,但最终以 "argument" 作为关键字。
for argument in arguments:
if args[argument]:
unit.modify(argument=args[argument])
return jsonify(result = args[argument])
与其直接从 args 设置值,不如先检查它们是否不是 None。
def build_modify(args):
return {key: value for key, value in args if value is not None}
将 args 传递给此函数,将结果解包到 modify
。
unit.modify(**build_modify(parser.parse_args()))
你可以这样写
updated_fields = {'set__'+key:value for key, value in args.items() if value}
unit.update(**updated_fields)
我想根据 PUT 请求修改文档。但是,请求中的一些值是 None 并且最终取消了文档中的设置值。我如何更新具有值的字段,同时保留未设置的字段?
class getUnit(restful.Resource):
def put(self,unit_id):
args = parser.parse_args()
unit = Unit.objects.get_or_404(id=unit_id)
unit.modify(block_number=args["block_number"], street_name=args["street_name"], postal_code=args["postal_code"], city=args["city"], country=args["country"], coordinates=args["coordinates"], price=args["price"], num_rooms=args["num_rooms"], sqft=args["sqft"])
return jsonify(result = unit)
我尝试遍历每个参数,但最终以 "argument" 作为关键字。
for argument in arguments:
if args[argument]:
unit.modify(argument=args[argument])
return jsonify(result = args[argument])
与其直接从 args 设置值,不如先检查它们是否不是 None。
def build_modify(args):
return {key: value for key, value in args if value is not None}
将 args 传递给此函数,将结果解包到 modify
。
unit.modify(**build_modify(parser.parse_args()))
你可以这样写
updated_fields = {'set__'+key:value for key, value in args.items() if value}
unit.update(**updated_fields)