2010-12-19 53 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)