1. ホーム
  2. django

[解決済み] django で新しいレコードを作成せずにモデル内のフィールドを更新するには?

2023-06-30 22:10:03

質問

私はdjangoで更新のみを行いたいモデルを持っています。つまり、私がそれを呼び出してデータを設定すると、それは新しいレコードを作成せず、既存のものを更新するだけです。どうすればいいでしょうか?以下は私が持っているものです。

class TemperatureData(models.Model):   
    date = models.DateTimeField()   
    value = models.PositiveIntegerField()   
    alert = models.BooleanField()

どのように解決するのですか?

データベースからモデルのインスタンスを取得した場合、saveメソッドを呼び出すと、常にそのインスタンスが更新されます。 例えば

t = TemperatureData.objects.get(id=1)
t.value = 999  # change field
t.save() # this will update only

INSERT をしないようにするのが目的なら save メソッドをオーバーライドし、主キーが存在するかどうかをテストし、例外を発生させます。 詳しくは以下を参照してください。