ProgramingTip

모델의 특정 필드 만 업데이트합니다.

bestdevel 2020. 10. 16. 07:43
반응형

모델의 특정 필드 만 업데이트합니다.


나는 모델이있다

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)

일반적으로 하나 이상의 모델 인스턴스에서 특정 필드를 업데이트하는 올바른 방법은 각 쿼리 세트 에서 메소드 를 사용하는 것입니다. 그런 다음 다음과 같이합니다.update()

affected_surveys = Survey.objects.filter(
    # restrict your queryset by whatever fits you
    # ...
    ).update(active=True)

이렇게하면 save()모델이 자동으로 저장되기 때문에 더 이상 모델 을 호출 할 필요가 없습니다 . 또한이 update()메서드는 업데이트의 영향을받은 설문 조사 인스턴스를 반환합니다.

참고 URL : https://stackoverflow.com/questions/13901244/update-only-specific-fields-in-a-models-model

반응형