Admin 사이트에 대해 살펴보았습니다. Admin 사이트는 장고의 장점 중에 하나로, 관리자가 UI 화면에서 데이터를 조회, 입력, 수정, 삭제할 수 있는 아주 편리한 기능입니다.(라고 적혀있다.)
장고는 파이썬 쉘을 이용하여 데이터를 관리할 수 있는 API도 제공한다.
Admin 사이트가 UI로 보면서 데이터를 관리할 수 있어 편리하다면, 쉘 데이터 처리는 복잡한 조건 검색처럼, Admin 사이트보다는 더 다양한 데이터 관리 명령이 가능합니다.
실행방법은 python manage.py shell 을 하면 된다.
기본 파이썬 쉘과 다른 점은 manage.py 모듈에서 정의한 DJANGO_SETTINGS_MODULE 속성을 이용한다.
그리고 테이블은 레코드의 모음이라고 할 수 있는데, 장고의 ORM은 이러한 테이블의 구조를 클래스로 표현합니다. 테이블 레코드를 생성합니다.
Shell CRUD 를 처리하도록 합니다.
데이터 입력, 즉 테이블에 레코드를 생성하기 위해서는 필드 값을 지정하여 객체를 생성한 후에 save() 메소드를 호출하면 됩니다. save 메소드가 실행하기 전에는 메모리에서만 변경된 것이므로 변경사항을 데이터베이스에 반영이 된다.
from polls.models import Question, Choice
from django.utils import timezone
q = Question(question_text=새로운게 뭐냐?', pub_date=timezone.now())
q.save()
데이터베이스로 데이터를 조회하기 위해서는 QuerySet 객체를 이용합니다. QuerySet은 데이터베이스 테이블로부터 꺼내 온 객체들의 콜렉션입니다. QuerySet은 데이터베이스 테이블로부터 꺼내 온 객체들의 콜렉션입니다. QuerySet은 필터를 가질 수 있으며, 필터를 사용하여 QuerySet 내의 항목 중에 조건에 맞는 레코드만 추출합니다. SQL 용어로 QuerySet은 select 문장에 해당하며, 필터는 where절에 해당합니다.
<aside> 💡 콜렉션 : 다수의 객체를 한 곳에 모아서 각 객체들을 동일한 방식으로 다룰 수 있도록 해주는 데이터 구조입니다. 간단히 이야기하면 여러 객체의 모임을 통칭해서 부르는 용어
</aside>
조회 결과를 담는 QuerySet을 얻으려면 objescts 객체를 사용합니다. objects 객체는 테이블 정보를 담고 있는 객체입니다. 테이블의 레코드를 출력한다.
Question.objects.all() # Question테이블의 레코드 모두를 가져온다.
모든 레코드가 아니라 조건에 맞는 일부 레코드만 검색할 떄는 filter()와 exclude() 메소드를 사용합니다.