WEB

[Django/Blog] Django ORM & QuerySets

 

Django ORM

ORM(Object-Relational Mapping)이란 객체(Object)와 관계형 DB(Relational Database)의 데이터를 매핑(mapping)해주는 것을 의미한다. 객체 간의 관계를 바탕으로 SQL을 자동으로 생성해서 SQL 쿼리문 없이도 DB의 데이터들을 다룰 수 있다. ORM을 사용하면 불필요하게 많이 적지 않아도 되니 빠르게 개발이 가능하고, 생산성이 좋아진다.

 

Django ORM은 model class를 통해서 객체를 만들고 이 객체를 통해서 DB에 접근한다.

 

 

쿼리셋 (QuerySet)

전달받은 모델의 객체 목록. 쿼리셋은 DB로부터 데이터를 읽고, 필터를 걸거나 정렬을 할 수 있음.

 

#django interactive console
(myvenv) ~/djangogirls$ python manage.py shell

>>> from blog.models import Post

#print every Post objects
>>> Post.objects.all()

#check users
>>> from django.contrib.auth.models import User
>>> User.objects.all()

#save new Post object
>>> me = User.objects.get(username='yourname')
>>> Post.objects.create(author=me, title='title1', text='Test') 

#filtering by name
>>> Post.objects.filter(author=me)

#filtering by title containg 'title'
>>> Post.objects.filter(title__contains='title')

#filtering by published_date
>>> from django.utils import timezone
>>> Post.objects.filter(published_date_lte=timezone.now())

#publish -> function of model Post
>>> post = Post.objects.get(title="title")
>>> post.publish()

#arrange
>>> Post.objects.order_by('created_date')
>>> Post.objects.order_by('-created_date')

#chaining
>>> Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
728x90
반응형

'WEB' 카테고리의 다른 글

[PHP] 데이터 정제  (0) 2019.12.10
[Django/Blog] DB에서 데이터를 가져와 템플릿에 적용  (0) 2019.12.08
[Django/Blog] View / Template  (0) 2019.12.07
[Django/Blog] URL  (0) 2019.12.07
[Django/Blog] 관리자 설정  (0) 2019.12.07