๋ชฉ์ฐจ
Django QuerySet(์ฟผ๋ฆฌ์ )
DB์ ๊ฐ์ฒด๋ค์ ํ ํ๋ฆฟ์์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์ ์ด์ฉํ๋ '๊ฐ์ฒด์ ์งํฉ'์ด๋ค.
๊ฐ์ฒด๋ค์ ๋ํ์ฌ ํํฐ๋ง์ ํ๊ฑฐ๋ ์ ๋ ฌ์ ํ ์ ์๋ค.
DB(SQL)์์๋ row์ ํด๋นํ๊ณ , ํ์ด์ฌ ์ฝ๋๊ฐ SQL๋ก ๋งคํ๋์ด
QuerySet์ด๋ผ๋ ์๋ฃ ํํ๋ก ๊ฐ์ด ๋์ด์จ๋ค.
์ฅ๊ณ Shell
์ฅ๊ณ ์ธํฐ๋ํฐ๋ธ ์ฝ์(interactive console)๋ฅผ ์ด์ฉํ์ฌ
์ฟผ๋ฆฌ์ ์ ๋ํ ๊ฐ์ ํ์ธํด๋ณผ ์ ์๋ค.
ํด๋น ์ฝ์์์๋ ์ฅ๊ณ ์ ๋ช ๋ น์ด์ ํ์ด์ฌ์ ๋ช ๋ น์ด ๋ฑ์ ์ด์ฉํ ์ ์๋ค.
python manage.py shell
๋จผ์ models.py์์ ์ํ๋ ๋ชจ๋ธ์ ๊ฐ์ ธ์จ๋ค.
from blog.models import Post
1. ๋ชจ๋ ๊ฐ์ฒด ๋ฐํ
Post.objects.all()
2. ๊ฐ์ฒด ์์ฑํ๊ธฐ
ํ์์ ๋ฐ๋ผ User๊ฐ ํ์ํ๋ค๋ฉด ๊ฐ์ ธ์จ๋ค.
from django.contrib.auth.models import User
์ ์ ๊ฐ์ฒด๋ ๋ฐํํ ์ ์๋ค.
User.objects.all()
--------
# ๊ฐ์ฒด ํ๋ ์์ฑ
me = User.objects.get(username='user1')
# ํ ๊ฐ์ฒด ๊ฐ์ ธ์ค๊ธฐ
me = User.objects.get(username='user1')
ex)์ฐ๋ฆฌ ํ๋ ํ๋ฉด
Post.objects.create(author=me, title='Sample title', text='Test')
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก create()๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ๋ค. ์ด๋, ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ค์ ์ธ์๋ก ์ ๋ฌํ๋ค.
3. ํํฐ๋ง
filter()์ ์กฐ๊ฑด์ ์ธ์๋ก ์ ๋ฌํ์ฌ ํํฐ๋ง์ ํ ์ ์๋ค.
ex)
Post.objects.filter(author=me)
'__contains' ๋ ์ฐ์ฐ์๊ณผ ํํฐ๋ก ํ๋๋ช ๋ค์ ๋ถ์ฌ์ฃผ๋ฉด ์ํ๋ ๊ฐ์ ํฌํจํ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
Post.objects.filter(title__contains='title')
์๊ฐ ์ ๋ณด๋ฅผ ์ด์ฉํ ๋๋ timezone์ ๊ฐ์ ธ์จ๋ค.
from django.utils import timezone
Post.objects.filter(published_date__lte=timezone.now())
4. ์ ๋ ฌ
order_by()ํจ์๋ ์ธ์๋ก ์ ๋ฌํ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ๋ณด์ฌ์ค๋ค.
#์ค๋ฆ์ฐจ์
Post.objects.order_by('created_date')
#๋ด๋ฆผ์ฐจ์
Post.objects.order_by('-created_date')
5. ๋ณํฉ
์ฟผ๋ฆฌ์ ์ ์์์ ๋ค๋ฃฌ ๊ฒ๋ค์ ์กฐํฉํ์ฌ ์ด์ฉํ ์ ์๋ค.
QuerySet ์ถ๊ฐ์๋ฃ
(https://docs.djangoproject.com/en/2.0/ref/models/querysets/)
'๐ | WEB DEV > Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Django_์ฅ๊ณ ๋ถ์๊ธฐ (6)_CRUD (0) | 2022.06.30 |
---|---|
Django_์ฅ๊ณ ๋ถ์๊ธฐ (5)_ํ์ด์ง ์ด๋, ์์ธ ํ์ด์ง (0) | 2022.06.30 |
Django_์ฅ๊ณ ๋ถ์๊ธฐ (4)_ํ ํ๋ฆฟ ๋ฌธ๋ฒ (0) | 2022.06.30 |
Django_์ฅ๊ณ ๋ถ์๊ธฐ (2)_MVT ์์ฑ (0) | 2022.06.30 |
Django_์ฅ๊ณ ๋ถ์๊ธฐ (1)_๊ธฐ์ด (0) | 2022.06.30 |
๋๊ธ