2012-07-03 43 views
8

Tôi muốn tăng giá trị trong cơ sở dữ liệu mà không phải thực hiện lần truy cập trên db để tìm giá trị thực. Có hiệu quả, tôi muốn làm một cái gì đó như thế này ... nhưng điều này không hoạt động. Bất kỳ giải pháp thanh lịch nào?Giá trị gia tăng trong cơ sở dữ liệu django

P.objects.filter(username='John Smith').update(accvalue+=-50) 

THANKS!

Trả lời

10

Kiểm tra Django's F() object.

Bạn có thể kết hợp nó với update() phương pháp để cập nhật các giá trị dựa trên các giá trị trường previos ví dụ:

>>> from django.db.models import F 
>>> P.objects.filter(username="John Smith").update(accvalue=F("accvalue") + 50) 

này sẽ sử dụng UPDATE phương pháp có nguồn gốc cơ sở dữ liệu để làm những gì bạn muốn làm.

+0

CẢM ƠN! Làm thế nào là điều này về hiệu suất? – snakesNbronies

+0

Tốt hơn là sử dụng phương pháp lưu thông thường và trên đầu đề đó an toàn :) – bx2

+2

Tôi có thể nhận được giá trị gia tăng mà không cần truy vấn lại không? Điều này sẽ tránh được các vấn đề khi truy cập đồng thời – Don

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