Django ORM에서 get(), values(), values_list()의 차이
1. get(): 단일 객체 조회
특정 조건을 만족하는 "한 개의 객체만" 가져올 때 사용
결과가 없거나 여러 개면 오류 발생
ex)
user = User.objects.get(userid='test01')
-->
홍길동 hong@example.com
2. values(): 특정 필드만 가져오기 (dict 형태)
여러 개의 결과를 가져오되, 특정 필드만 딕셔너리(dict) 형태로 반환
ex)
users = User.objects.values('name', 'email')
-->
[
{'name': '홍길동', 'email': 'hong@example.com'},
{'name': '김철수', 'email': 'kim@example.com'},
{'name': '이영희', 'email': 'lee@example.com'}
]
3. values_list(): 특정 필드 가져오기 (tuple 형태)
여러 개의 결과를 가져오되, 특정 필드만 tuple 형태로 반환
ex)
users = User.objects.values_list('name', 'email')
-->
[
('홍길동', 'hong@example.com'),
('김철수', 'kim@example.com'),
('이영희', 'lee@example.com')
]
4. values_list(flat=True): 단일 필드 리스트 반환
하나의 필드만 가져오고, 리스트(list) 형태로 반환
ex)
emails = User.objects.values_list('email', flat=True)
-->
['hong@example.com', 'kim@example.com', 'lee@example.com']