brunch
매거진 백엔드

Django - View에서 하는 일

by 내가 사는 세상

목차

1. 데이터 가져오기

1.1. 한번에 여러개 가져오기(queryset)

1.2. 하나만 가져오기(get)



1. 데이터 가져오기

1.1. 한 번에 여러 개 가져오기(queryset)

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')




1.2. 하나만 가져오기(get)

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()

keyword
매거진의 이전글django tips