๋ค์ํ ๋ฐ์ดํฐ ๊ฒ์ ๋ฌธ๋ฒ
1) contains : ํน์ string์ด ํฌํจ๋ object ์ฐพ๊ธฐ
fullname์ "์ด๋ฆ"์ด๋ผ๋ string์ด ํฌํจ๋ ์ฌ์ฉ์๋ค์ ์ฐพ๋๋ค.
UserModel.objects.filter(fullname__contains="์ด๋ฆ")
2) startswith / endsith : ํน์ string์ผ๋ก ์์ํ๋/๋๋๋ object ์ฐพ๊ธฐ
email์ด "@naver.com"์ผ๋ก ๋๋๋ ์ฌ์ฉ์๋ค์ ์ฐพ๋๋ค.
UserModel.objects.filter(email__endswith="@naver.com")
3) gt / lt / gte / lte : ํน์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋/์๊ฑฐ๋/ํฌ๊ฑฐ๋๊ฐ๊ฑฐ๋/์๊ฑฐ๋๊ฐ์ object ์ฐพ๊ธฐ
์ฌ์ฉ์ ํ๋กํ์ ๋์ด๊ฐ 19 ์ด์์ธ ์ฌ์ฉ์๋ค์ ์ฐพ๋๋ค.
UserProfileModel.objects.filter(age__gte=19)
4) in : ํน์ list์ ํฌํจ๋ object ์ฐพ๊ธฐ
์ฌ์ฉ์ ํ๋กํ์ ์ด๋ ํน์ ๋
์๋ฅผ ์ทจ๋ฏธ๋ก ๊ฐ์ง ์ฌ์ฉ์๋ค์ ์ฐพ๋๋ค.
UserProfileModel.objects.filter(hobby__name__in=["์ด๋", "๋
์"])
๊ฒ์ ๊ฒฐ๊ณผ๋ฌผ ์ ๋ ฌํ๊ธฐ
order_by๋ฅผ ์ฌ์ฉํด queryset์ ์ ๋ ฌ์ํฌ ์ ์๋ค.
๐งฉ ์ ์ฉ ์์
User.objects.all().order_by("join_date") # ๊ฐ์
์ผ ์ ์ ๋ ฌ
User.objects.all().order_by("-join_date") # ๊ฐ์
์ผ ์ญ์ ์ ๋ ฌ
User.objects.all().order_by("?") # ๋๋ค ์
ํ
๐งฉ ์ ์ฉ ์์
from django.db.models.query_utils import Q
class UserView(APIView)
def get(self, request):
# ์ทจ๋ฏธ ์ค ์ฐ์ฑ
์ด ์๊ฑฐ๋ ๋์ด๊ฐ 19์ด๋ณด๋ค ๋ง๊ณ ๊น์จ์ธ ์ฌ๋๋ง ํํฐ ์ฌ๋๋ง ํํฐ
qyery = Q(hobby__name="์ฐ์ฑ
") | Q(age__gt=19, user__name__startswith="๊น")
# ์ทจ๋ฏธ ์ค ์ฐ์ฑ
์ด ์์ผ๋ฉด์ ๋์ด๊ฐ 19์ด๋ณด๋ค ๋ง์ ์ฌ๋๋ง ํํฐ
qyery = Q(hobby__name="์ฐ์ฑ
") & Q(age__gt=19)
user_profile_list = UserProfileModel.objects.filter(qyery)
view์์ partial/raise_exception๋ฅผ ์ฌ์ฉํด ์ต์ ์ ํ์ฉํ๊ฑฐ๋ serializer์์ ๊ฐ ํ๋์ ํด๋นํ๋ ๋ค์ํ ์ต์ ๋ค์ ์ง์ ํด์ฃผ๋ ๋ฑ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ค์ ํ์ฉํด์ ์์ฝ๊ฒ curd ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์๋ค๋๊ฒ ๊ฐ์๋ก ์ ์ ์๋ก์์ง๋ ๊ฒ ๊ฐ๋ค. ๋ค๋ง, ๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ๋ฅ๋ค์ ์ตํ๋๋ฐ์๋ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆด ๊ฒ ๊ฐ๋ค๋๊ฒ ๊ด๊ฑด์ธ๋ฏํ๋ค. ๊ฐ์๊ฐ ๋๋ ๋๋ง๋ค ์ฃผ์ด์ง๋ ๊ณผ์ ๋ฅผ ์งํํ ๋๋ง๋ค ๊ทธ๋๋ ์ ์ด๋ ํ๊ฐ์ง์ฉ์ด๋ผ๋ ๋ฐฐ์ธ ์ ์์ด์ ์ข๋ค.
์ด์ฌํ ๊ณต๋ถํ๋๊ฒ ๋ณด๊ธฐ์ข๋ค์ ^^~ ํ์ดํ ํ์ดํ ~
โฐ(ยฐโฝยฐ)โฏ