Django와 QuerySet

jun17114·2020년 12월 24일
0

Django!

목록 보기
1/1
post-thumbnail

🚀 Django

Django장고라고 읽으며 파이썬을 기반으로 한 Web Framework입니다. 오늘은 Django를 배운다면 이해하고 있어야하는 점들과 Django의 역할을 살펴 볼 것입니다.

Django의 구조와 역할


위의 이미지는 DjangoWorkflow입니다. Client에서 요청이 오면 가장 먼저 URLconf라는 곳을 지나가게 됩니다.

URLconf는 은행에서 원하는 창구 표를 뽑아주시는 분과 같은 역할을 합니다.

그 다음에 도착하는 곳은 View입니다. ViewMVC 모델에서 Controller과 유사한 역할을 가지고 있습니다. View는 필요한 데이터를 Model에서 가져와 가공하는 역할을 합니다.

Model은 데이터베이스 Schema를 담당하고, 여러개의 클래스로 이루어져있습니다.

ModelDatabase 사이에는 ORM이라는 것이 존재합니다. ORM은 Object-Relational-Mapping으로 Django에서의 ORM은 파이썬으로도 SQL문 처럼 데이터를 조작할 수 있게 해줍니다.

알아두면 좋을 포인트!

Django를 공부하게 되면 QuerySet API라는 것을 사용하게 됩니다. QuerySet을 공부하면서 기억하면 좋은 것들을 알아보겠습니다.

QuerySet

QuerySetapi 이름이면서 특별한 Data Type이기도 합니다. 예로 Person이라는 객체에서 정보를 가져오고 싶을때 get() 메소드로 가져올수도, filter() 메소드로도 가져올수 있습니다. 이 둘의 큰 차이점 중 하나는 get()은 객체를 반환하고, filter()QuerySet을 반환합니다.

objects

QuerySet 메소드를 사용할때 아래와 같은 규칙을 띕니다.

>> Person.objects.create(name="Justin", age="25", job="CEO")

Person DB에 데이터를 추가하는 코드로, Person 다음에 objects가 사용되었습니다. 이 objects는 Manager class의 메소드로 기억하면 되겠습니다.

_set

참조하고 있는 경우는 person.name이나 person.age와 같이 정보를 가져올 수 있습니다. 하지만 만약 참조되어지고 있는 경우에는 _set을 사용하면 됩니다.

>> person.dog_set.all()   #주인이 키우는 모든 강아지를 QuerySet으로 반환 

update
C.R.U.D 중에서 update은 단일 객체에는 사용이 불가능합니다. 즉, QuerySet에만 사용이 가능합니다.

__name

>> Product.objects.filter(category__name="콜드 브루 커피")

# <QuerySet [<Product: Product object (1)>]>

위와 같이 'Child'는 (__) 을 사용해서 자신의 Parent 필드를 참조할 수 있습니다.


0개의 댓글