更新(并保存)您所执行的对象上的字段:
>>> product = Product.objects.get(name='Venezuelan Beaver Cheese')
>>> product.number_sold = 4
>>> product.save()
有没有办法将最后两行压缩成一行,例如:
product.update(number_sold=4)
答案 0 :(得分:25)
烨。
Product.objects.filter(name='Venezuelan Beaver Cheese').update(number_sold=4)
如果您更改了模型实例并且只想将特定字段保存到数据库,请执行以下操作:
product.name = "New name of the product"
product.save(update_fields=['name'])
答案 1 :(得分:6)
@Lovelive的答案是最好的方法。唯一的缺点是你没有得到那个实例。因此,如果您需要product = Product.objects.get(...)
其他任何内容,您仍然需要product
行。但是,它确实涵盖了“将最后两行压缩成一行”的用例场景。
只是扮演魔鬼的拥护者,你也可以为你的模型添加一个方法:
class Product(models.Model):
...
def update(self, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)
self.save()
答案 2 :(得分:0)
根据具体情况,这也是另一种选择:
product.save(update_fields=["number_sold"])