我有一个queryset,它返回模型的第一个对象
latest_ignit_data = ( ignition_data
.objects
.filter(vehicle=veh_obj,updated_time_lt=new_time)
.order_by('updated_time')
.first()
)
我想更新此对象的时间字段,我该怎么做?
答案 0 :(得分:2)
<强> EDITED 强>
这是不的方式:
latest_ignit_data.update( updated_time =new_time )
阅读django documentation, first
raises a QuerySet evaluation,因为first
method is a convenience method equivalent to slicing.
然后,正确的方式是:
pk = ( ignition_data
.objects
.filter(vehicle=veh_obj,updated_time_lt=new_time)
.order_by('updated_time')
.values_list('id', flat=True)
.first()
)
ignition_data.objects.filter(pk=pk).update( updated_time =new_time )
这将在没有创建实例且没有提升信号的情况下更新数据库。