更新动态字段Django queryset

时间:2019-03-11 04:13:40

标签: django django-rest-framework

我想用动态字段(如param)构建更新Django queryset。 例如,我的字段是planned

 def update_data(period, old_planned, new_planned):
    Cost.objects.filter(period=period).update(
            planned=F('planned') - old_planned + new_planned)

如果我想传递planned之类的def字段,例如def(period, old_planned, new_planned, update_field),那么如何在内部继续使用F呢?

1 个答案:

答案 0 :(得分:1)

假设

  1. 过滤过程始终针对 period 字段

更改

为了通用起见,我添加了一个额外的参数 param_value ,并将old_planned更改为 old_param_value ,然后new_planned new_param_value


代码示例

def update_data(period, param_value, old_param_value, new_param_value):
    update_kwargs = {param_value:F(param_value) - old_param_value + new_param_value}
    Cost.objects.filter(period=period).update(**update_kwargs)