更新筛选器queryset django中的特定字段,而不创建实例
我有一个queryset,它返回模型的第一个对象更新筛选器queryset django中的特定字段,而不创建实例,django,python-2.7,django-models,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()
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 )
读书是因为
然后,正确的方法是:
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 )
这将在没有创建实例和raise信号的情况下更新数据库。您肯定从
first()
获得的模型实例不是pk值,所以上面的代码仍然不太正确?@Anentropic,str(UF.objects.values\u list('id',flat=True)[:1]。query)
返回选择“ufs\u UF”,“id”从“ufs\u UF”返回限制1’
此外,永远不会创建模型。(参见实现)我的错误,我没有注意到链中的值列表:)