..

Django Queryset Update Get Filter

문제

Django의 ORM에서 값을 업데이트(수정) 하기 위해 아래 코드와 같이 update를 사용했다.

Entry.objects.get(pk=pk).update(comments_on=True)


확인을 해보니 Entry 객체에 update가 없다는 오류가 발생했다. 🤔???

AttributeError: 'Entry' object has no attribute 'update'

해결

이래서 공식 문서를 잘 읽어봐야 한다…

get을 사용해 값을 없데이트 할 경우에는 update를 사용할 수 없고, 아래 코드와 같이 값을 업데이트 해야 한다.

e = Entry.objects.get(pk=pk)
e.comments_on = True
e.save()


filter를 사용한 경우에는 아래 코드와 같이 update를 사용할 수 있다.

Entry.objects.filter(pk=pk).update(comments_on=True)


get은 검색 결과에 해당하는 하나의 객체를 반환하고, filter는 검색 결과에 해당하는 여러 개의 객체를 포함한 QuerySet을 반환한다.

참고

https://docs.djangoproject.com/en/4.0/ref/models/querysets/#update