๐ Model Manager
Django ์์ Model Manager์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
๐ Model ๊ฐ์ฒด ์กฐํ
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์กฐํ ํ ์ ์๋ค.
python manage.py shell
>>> from App.models import Post
>>> Post.objects.all()
๐ ์ด๋ค ์์ฑ ๊ฐ์ ๋ฐ๋ฅธ ๋ด๋ฆผ ์ฐจ์์ผ๋ก ์กฐํํ๊ธฐ
Post.objects.all().order_by('-pk')[:10]
๐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ๋ค๋ฉด ์์ฑ์์ - ๊ธฐํธ๋ฅผ ๋นผ์ฃผ๋ฉด ๋๋ค.
model.objects.all() ์ ๊ฐ์ฒด ๋ฆฌ์คํธ๊ฐ ๋ฐํ๋๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฒด๋ด์ ์๋ ๋ด์ฉ์ ์์ ํ๊ฑฐ๋ ๋ฝ์ ๋ด๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์ฌ์ผ ํ๋ค.
qs = Post.objects.all().order_by('-pk')[:10]
for post in ps:
print(post.message, post.created_at)
๐ filter ์ต์ ์ ์ฌ์ฉํ์ฌ ์กฐํํ๊ธฐ
filter ์ต์ ์ ์ด์ฉํ์ฌ ์ฐพ๊ณ ์ ํ๋ ๊ฒ์ ์กฐํ ํ ์ ์๋ค.
Post.objects.all().filter(message="์ฒซ๋ฒ์งธ")
๐ exclude ์ต์ ์ ์ฌ์ฉํ์ฌ ์กฐํํ๊ธฐ
exclude ์ต์ ์ ์ด์ฉํ์ฌ ํด๋น ๊ฐ์ ์ ์ธํ ๋๋จธ์ง ๊ฐ์ฒด๋ฅผ ์กฐํ ํ ์ ์๋ค.
post.objects.all().exclude(message="ํ์ด")
๐ ํน์ ๋ชจ๋ธ ๊ฐ์ฒด 1๊ฐ ์กฐํํ๊ธฐ
# ๋ชจ๋ธ๊ฐ์ฒด ํน์ ์์ธ๊ฐ ๋ฐ์ ํ ์ ์๋ค. (indexError)
queryset[์ซ์ ์ธ๋ฑ์ค]
# ๋ชจ๋ธ๊ฐ์ฒด ํน์ ์์ธ๊ฐ ๋ฐ์ ํ ์ ์๋ค. (DoesNotExist, MultipleObjectsRetruned)
queryset.get()
# ๋ชจ๋ธ๊ฐ์ฒด ํน์ None ๋ฐํ
queryset.first()
queryset.last()
๐ ์ฌ๋ฌ ์กฐ๊ฑด์ ๊ณ ๋ คํ์ฌ ์กฐํํ๊ธฐ
# Q ํจ์๋ฅผ ๊ฐ์ ธ์ด
from django.db.models import Q
qs = Post.objects.all()
cond = Q(massage="hi") | Q(id__gte=2)
qs = qs.filter(cond)
print(qs)
๐ ํ๋ ํ์ ๋ณ ๋ค์ํ ์กฐ๊ฑด ๋งค์นญ
๐ ์ซ์/๋ ์ง/์๊ฐ ํ๋
ํ๋๋ช __lt = ์กฐ๊ฑด๊ฐ | ํ๋๋ช < ์กฐ๊ฑด๊ฐ |
ํ๋๋ช __lte = ์กฐ๊ฑด๊ฐ | ํ๋๋ช <= ์กฐ๊ฑด๊ฐ |
ํ๋๋ช __gt = ์กฐ๊ฑด๊ฐ | ํ๋๋ช > ์กฐ๊ฑด๊ฐ |
ํ๋๋ช __gte = ์กฐ๊ฑด๊ฐ | ํ๋๋ช >= ์กฐ๊ฑด๊ฐ |
๐ ๋ฌธ์์ด ํ๋
ํ๋๋ช __startswith = ์กฐ๊ฑด๊ฐ | ํ๋๋ช LIKE “์กฐ๊ฑด๊ฐ%” |
ํ๋๋ช __istartswith = ์กฐ๊ฑด๊ฐ | ํ๋๋ช ILIKE “์กฐ๊ฑด๊ฐ%” |
ํ๋๋ช __endswith = ์กฐ๊ฑด๊ฐ | ํ๋๋ช LIKE “%์กฐ๊ฑด๊ฐ” |
ํ๋๋ช __iendswith = ์กฐ๊ฑด๊ฐ | ํ๋๋ช ILIKE “%์กฐ๊ฑด๊ฐ” |
ํ๋๋ช __contains = ์กฐ๊ฑด๊ฐ | ํ๋๋ช LIKE “%์กฐ๊ฑด๊ฐ%” |
ํ๋๋ช __icontains = ์กฐ๊ฑด๊ฐ | ํ๋๋ช ILIKE “%์กฐ๊ฑด๊ฐ%” |
'FrameWork > Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] ํจ์ ๊ธฐ๋ฐ View (0) | 2023.02.08 |
---|---|
[Django] ๊ด๊ณ๋ฅผ ํํํ๋ Model Field (0) | 2023.02.08 |
[Django] shell ์ฌ์ฉํ๊ธฐ (0) | 2023.02.08 |
[Django] Django project ์์ ์ static, media ์ค์ ํ๊ธฐ (0) | 2023.02.08 |
[Django] Admin์ ์ด์ฉํ์ฌ DB ๊ด๋ฆฌ (0) | 2023.02.07 |