2012-05-11 25 views

Trả lời

22

Yup.

Product.objects.filter(name='Venezuelan Beaver Cheese').update(number_sold=4) 

Nếu bạn có một trường hợp mô hình bạn đã thay đổi và muốn tiết kiệm chỉ các lĩnh vực cụ thể cho các cơ sở dữ liệu, thực hiện điều đó:

product.name = "New name of the product" 
product.save(update_fields=['name']) 
+1

Liên kết với các tài liệu hướng dẫn: [Đang cập nhật nhiều đối tượng cùng một lúc] (https://docs.djangoproject.com/en/dev/topics/db/queries/#updating-multiple-objects-at-once) (không bị đánh lừa bởi tiêu đề, bạn có thể chọn một hàng và cách này chỉ cập nhật một). – Tadeck

+2

Django 1.5 giờ đây cho phép bạn cập nhật chỉ một trường trên save() với tham số update_fields https://docs.djangoproject.com/en/1.5/ref/models/instances/#specifying-which-fields-to-save – poiuytrez

+0

@poiuytrez Liên kết bị hỏng. Chăm sóc để cập nhật? – rschwieb

6

@ câu trả lời Lovelive là cách tốt nhất để đi. Nhược điểm duy nhất là bạn không nhận được ví dụ với điều đó. Vì vậy, bạn vẫn cần dòng product = Product.objects.get(...) nếu bạn cần product cho bất kỳ thứ gì khác. Tuy nhiên, nó bao gồm kịch bản sử dụng "nén hai dòng cuối cùng thành một dòng" một cách hoàn hảo.

Chỉ cần để chơi ủng hộ ma quỷ, bạn cũng có thể thêm một phương pháp để mô hình của bạn:

class Product(models.Model): 
    ... 
    def update(self, **kwargs): 
     for k, v in kwargs.iteritems(): 
      setattr(self, k, v) 
     self.save() 
0

Tùy thuộc vào tình hình này cũng là một sự lựa chọn:

product.save(update_fields=["number_sold"]) 
Các vấn đề liên quan