반응형
모델의 특정 필드 만 업데이트합니다.
나는 모델이있다
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
반응형
'ProgramingTip' 카테고리의 다른 글
동일한 솔루션에서 서로 다른 두 버전의 log4net 참조 (0) | 2020.10.16 |
---|---|
배열에서 첫 번째 요소를 제거하는 가장 좋은 방법은 무엇입니까? (0) | 2020.10.16 |
ipython 노트북의 루프에서 전체를 동적으로 업데이트하는 방법 (한 셀 내에서) (0) | 2020.10.16 |
명령 줄을 사용하여 mysql 사용자 비밀번호 변경 (0) | 2020.10.16 |
SQL Server의 Oracle RowID와 동일 (0) | 2020.10.16 |