2013-03-10 36 views
8

tôi cần phải thực hiện truy vấn này sử dụng ORM Django:tạo cập nhật truy vấn sử dụng ORM Django

update table set field=field+1 where id=id 

Tôi không whant sử dụng này:

o = model.objects.get(id=id) 
o.field+=1 
o.save() 

bởi vì nó sử dụng lựa chọn và khi cập nhật, và không phải là chủ đề an toàn.

Làm cách nào để triển khai điều này qua orm?

Trả lời

24

Cả người trả lời trước đó có một phần của giải pháp: bạn nên sử dụng update kết hợp với F():

Model.objects.filter(id=id).update(field=F('field') +1)) 

Chú giải này làm một trong -Cài đặt UPDATE mà không cần bất kỳ SELECT nào cả.

1

Bạn có thể sử dụng update, chi tiết có thể được tìm thấy trong the documentation

+0

OP muốn cập nhật các thuộc tính dựa trên các trường hiện có theo cách an toàn chủ đề, được thực hiện bằng biểu thức F(). Tôi không nghĩ rằng bản cập nhật có chức năng như vậy. bạn có chắc không? – jurgenreza

Các vấn đề liên quan