all()과 values() 모두 테이블의 데이터 모두 조회할 때 사용한다.
all()을 사용하면 QuerySet 객체가 반환되는데 1번 객체, 2번 객체 이런 식으로 id만 나오고 객체에 대한 자세한 정보는 나오지 않는다.
>>> Category.objects.all()
<QuerySet
[<Category: Category object (1)>,
<Category: Category object (2)>,
<Category: Category object (3)>,
<Category: Category object (4)>,
<Category: Category object (5)>,
<Category: Category object (6)>]>
values()를 사용해도 QuerySet 객체가 반환되는데 딕셔너리로 key=value 형태로 나온다. 속성 값을 모두 보여준다.
>>> Category.objects.values()
<QuerySet [{'id': 1, 'name': '콜드 브루 커피', 'menu_id': 1}, {'id': 2, 'name': '브루드 커피', 'menu_id': 1}, {'id': 3, 'name': '에스프레소', 'menu_id': 1}, {'id': 4, 'name': '프라푸치노', 'menu_id': 1}, {'id': 5, 'name': '블렌디드', 'menu_id': 1}, {'id': 6, 'name': '스타벅스 피지오', 'menu_id': 1}]>
get()과 filter()도 데이터를 조회하는 함수이다.
get()을 사용하면 객체를 리턴하며 데이터 하나만 조회할 수 있다.
>>> Category.objects.get(id=1)
<Category: Category object (1)>
filter()를 사용하면 QuerySet을 반환하며 여러 개의 데이터를 조회할 수 있다.
>>> Category.objects.filter(menu_id=1)
<QuerySet
[<Category: Category object (1)>,
<Category: Category object (2)>,
<Category: Category object (3)>,
<Category: Category object (4)>,
<Category: Category object (5)>,
<Category: Category object (6)>]>
create()와 save() 모두 테이블의 데이터를 만들 때 사용한다.
create를 쓰면 한 줄이면 간편하게 생성할 수 있는데
>>> Category.objects.create(name="콜드 브루 커피", menu_id=1)
<Category: Category object (1)>
save()는 변수를 새로 만들어서 저장해줘야 된다.
마지막에 save()를 해줘야 데이터베이스에 데이터가 저장된다.
>>> c2 = Category(name="브루드 커피", menu_id=1)
>>> c2
<Category: Category object (None)> # save 안 해줘서 None으로 뜸
>>> c2.save()
>>> c2
<Category: Category object (2)>