목차
1. 데이터 가져오기
1.1. 한번에 여러개 가져오기(queryset)
1.2. 하나만 가져오기(get)
filter()를 사용하는 쿼리셋은 지연 평가(Lazy Evaluation) 방식으로 동작 ->실제로 쿼리셋이 접근되기 전까지 데이터베이스에 쿼리를 보내지 않음. 필요할 때만 쿼리가 실행되기 때문에 성능 면에서 유리
.update() 사용가능 -> 데이터베이스에서 한 번에 일괄 업데이트를 수행. save() 호출이 필요X 여러 건을 효율적으로 업데이트할 때 유리
조건에 맞는 경우가 없을 경우 : 빈 쿼리셋을 반환하므로, 예외 없이 빈 결과로 처리 -> 반환 배열의 길이가 0이면 예외처리
.values()를 사용하면 dict형태로 반환(사용하지 않으면 모델 인스턴스로 반환)
queryset = MyModel.objects.filter(field_name='some_value')
#조건에 맞는 모든 객체의 필드를 한 번에 업데이트
queryset.update(field_name='new_value', another_field='another_value')
setattr() 사용가능
조건에 맞는 객체가 없으면 DoesNotExist 예외 발생 -> try, except로 예외처리
obj = MyModel.objects.get(field_name='some_value')
setattr(obj, 'field_name', 'new_value')
setattr(obj, 'another_field', 'another_value')
obj.save()