1. ホーム
  2. django

[解決済み] models.Modelの特定のフィールドのみを更新する

2022-09-23 03:45:10

質問

私はモデル

class Survey(models.Model):
    created_by = models.ForeignKey(User)
    question = models.CharField(max_length=150)
    active = models.NullBooleanField()
    def __unicode__(self):
        return self.question

のみを更新したいのですが active フィールドだけを更新したいのです。だから私はこうします。

survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"]) 

今度はエラー IntegrityError: PRIMARY KEY must be unique .

この方法で更新してよいのでしょうか?

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

フィールドのサブセットを更新するために update_fields :

survey.save(update_fields=["active"]) 

update_fields 引数は Django 1.5 で追加されました。それ以前のバージョンでは update() メソッドの代わりに

Survey.objects.filter(pk=survey.pk).update(active=True)