更新筛选器查询集django中的特定字段而不创建实例

时间:2015-04-17 07:46:21

标签: django python-2.7 django-models

我有一个queryset,它返回模型的第一个对象

latest_ignit_data = (  ignition_data
                      .objects
                      .filter(vehicle=veh_obj,updated_time_lt=new_time) 
                      .order_by('updated_time')
                      .first()
                    )

我想更新此对象的时间字段,我该怎么做?

1 个答案:

答案 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 )

这将在没有创建实例且没有提升信号的情况下更新数据库。