在不创建实例的情况下更新过滤器查询集 Django 中的特定字段



>我有一个返回模型第一个对象的查询集

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 )

这将在没有创建实例和引发信号的情况下更新数据库。

最新更新