我想用动态字段(如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
呢?
答案 0 :(得分: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)