オブジェクトのフィールドを更新 (および保存) するには:
>>> product = Product.objects.get(name='Venezuelan Beaver Cheese')
>>> product.number_sold = 4
>>> product.save()
次のように、最後の 2 行を 1 行に圧縮する方法はありますか。
product.update(number_sold=4)
オブジェクトのフィールドを更新 (および保存) するには:
>>> product = Product.objects.get(name='Venezuelan Beaver Cheese')
>>> product.number_sold = 4
>>> product.save()
次のように、最後の 2 行を 1 行に圧縮する方法はありますか。
product.update(number_sold=4)
うん。
Product.objects.filter(name='Venezuelan Beaver Cheese').update(number_sold=4)
変更したモデル インスタンスがあり、特定のフィールドのみをデータベースに保存する場合は、次のようにします。
product.name = "New name of the product"
product.save(update_fields=['name'])
@Loveliveの答えが最善の方法です。唯一の欠点は、それでインスタンスを取得できないことです。そのため、他に必要な場合は、引き続きproduct = Product.objects.get(...)
回線が必要product
です。ただし、「最後の 2 行を 1 行に圧縮する」というユースケース シナリオは完全にカバーしています。
悪魔の代弁者を演じるために、モデルにメソッドを追加することもできます。
class Product(models.Model):
...
def update(self, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)
self.save()