2010-12-19 52 views
0

我有以下型號:如何執行動態Django查詢集更新?

class Book(models.Model): 
    title = models.CharField(max_length=100) 
    quantity = models.IntegerField() 
    in_stock = models.BooleanField() 

我有一個表格,讓我更新的多種選擇書籍的數量和股票:

Quantity: 
In Stock: 

List of Books: 
1. Eat Pray and Love 
2. Twilight 

在我的意見,我可以更新的querylist書如下:

quantity = form.cleaned_data['quantity'] 
in_stock = form.cleaned_data['in_stock'] 

if quantity: 
    selected_books.update(quantity=quantity) 

if in_stock: 
    selected_books.update(in_stock=in_stock) 

我基本上是做一個批量更新只有當該字段已被輸入。以上需要2個獨立的sql更新語句。有沒有辦法調用使用一個單一的SQL語句,無論輸入字段的數量?

回答

4

建立一個字典,然後與kwarg擴展一次。

d = {} 

if quantity: 
    d['quantity'] = quantity 

... 

selected_books.update(**d)