如何执行动态Django查询集更新?

时间:2010-12-19 18:53:29

标签: 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

在我的观看中,我可以更新图书的查询列表,如下所示:

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 update语句。有没有办法调用使用单个sql语句而不管输入的字段数是多少?

1 个答案:

答案 0 :(得分:4)

建立一个字典,然后立即用kwarg扩展来做。

d = {}

if quantity:
  d['quantity'] = quantity

 ...

selected_books.update(**d)