>我有一个返回模型第一个对象的查询集
latest_ignit_data = ( ignition_data
.objects
.filter(vehicle=veh_obj,updated_time_lt=new_time)
.order_by('updated_time')
.first()
)
我想更新此对象的时间字段,该怎么做?
已编辑
这不是方式:
latest_ignit_data.update( updated_time =new_time )
阅读 django 文档,first
会引发 QuerySet 评估first
因为该方法是一种等同于切片的便捷方法。
那么,正确的方法是:
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 )
这将在没有创建实例和引发信号的情况下更新数据库。