2012-07-10 27 views
6

CẬP NHẬT: Đã thêm một khoản tiền. XIN CUNG CẤP MỘT VÍ DỤ VÀ TÔI SẼ CHẤP NHẬN TRẢ LỜI TỐT NHẤTDjango "bulk_save" và "bulk_update"

UPDATE 2: ví dụ rõ ràng hiện nay bao gồm

Carrying on from the same project, where I asked about bulk_create in a separate thread. Tôi đã tự hỏi nếu có một cách để cơ bản "bulk_save" - ​​chèn nếu không tồn tại hoặc chỉ cần cập nhật nếu nó đã tồn tại.

Ví dụ:

class Person(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    height = models.DecimalField(blank=True, null=True) 
    weight = models.DecimalField(blank=True, null=True) 

Tôi có một danh sách các từ điển với cặp khóa-giá trị cho các lĩnh vực này. Tôi muốn lọc theo tên, và sau đó cập nhật chiều cao và/hoặc trọng lượng như những người chơi của tôi vẫn đang phát triển và điều hòa. Nếu không có cách dễ dàng để "bulk_save", bản cập nhật hàng loạt cũng sẽ hữu ích.

Reference: June 8, 2012 - "get_or_create()" patch at django project

Bulk_update reference

+0

Tôi không hiểu bạn đang cố gắng cập nhật thông tin nào cho mọi đối tượng và thông tin nào bạn muốn sử dụng để tìm kiếm các đối tượng hiện có. Bạn có thể cho chúng tôi ví dụ về cách bạn muốn sử dụng phương thức bulk_create_or_update tiềm năng không? Dường như với tôi rằng bạn có thể có hành vi mà bạn muốn với sự kết hợp của một số phương pháp django hiện có, nhưng tôi không hiểu những gì bạn đang cố gắng làm chính xác ... – marianobianchi

+0

@marianobianchi - thêm ví dụ rõ ràng. cảm ơn! – snakesNbronies

+0

"Tôi muốn lọc theo tên" như âm thanh hoạt động cập nhật. "bulk_save" có vẻ như "bulk_create". Tôi cũng không biết nếu một bulk_update thậm chí có thể trong django. – jdi

Trả lời

3

Tôi chỉ là một biến thể của hàm update_many liệt kê dưới đây tôi dường như đã được cải thiện tốc độ cực kỳ rồi.

http://people.iola.dk/olau/python/bulkops.py

CẬP NHẬT - Dường như DSE2 cũng là một tùy chọn.

https://bitbucket.org/weholt/dse2

Sẽ cập nhật với kiểm tra tốc độ vào ngày mai.

+0

được cập nhật với tùy chọn khác. sẽ cho so sánh tốc độ vào ngày mai. – snakesNbronies

+1

bạn có nhận được kiểm tra tốc độ không? – tr33hous