๐Ÿ”ฅ ์ฟผ๋ฆฌ์…‹(QuerySet)์ดํ•ดํ•˜๊ธฐ

may_soouuยท2020๋…„ 8์›” 28์ผ
2

Django

๋ชฉ๋ก ๋ณด๊ธฐ
6/9

์žฅ๊ณ  ํŠœํ† ๋ฆฌ์–ผ2๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋ฉด API๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค.
shell ์„ ํ˜ธ์ถœํ•ด์„œ ์ง„ํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์ด๋ฉฐ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์•„ ๋”ฐ๋กœ ์ •๋ฆฌ๋ฅผ ํ–ˆ๋‹ค.

  • โœ‹๐Ÿป ์ฟผ๋ฆฌ์…‹์ด๋ž€ ?
    - ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋ธ์˜ ๊ฐ์ฒด ๋ชฉ๋ก. ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ํ•„ํ„ฐ๋ฅผ ๊ฑธ๊ฑฐ๋‚˜ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๊ฒ€์ƒ‰

1-1. all()

>>> python manage.py shell
 # ํ„ฐ๋ฏธ๋„์— ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ shell ์„ ์—ด๊ณ  ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
>>> from author.models import User
 # ๋ถˆ๋Ÿฌ์˜ค๊ณ ์ž ํ•˜๋Š” ๋ชจ๋ธ์„ ๋จผ์ € ์ž„ํฌํŠธ ํ•ด์ค˜์•ผํ•œ๋‹ค.

>>> User.objects.all()
<QuerySet[<User: User object (1)>]>

 #Question๋ชจ๋ธ(ํ…Œ์ด๋ธ”)์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
 # objects๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ์ฒด๊ฐ€ Quesryset

1-2. get

queryset์ด ์•„๋‹Œ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋‹ค

User.objects.get(username='coding')
  # get์€ ํ•˜๋‚˜์˜ row๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ

2. ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

creat()

User.objects.creat(username='coding')
 # ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ํ•˜๊ณ  object.all() ํ•˜๋ฉด 
 # <QuerySet[<User: User object (2)>]> :2๊ฐ€ ๋œ๋‹ค.

3. ๋ฐ์ดํ„ฐ ์ฐพ๊ธฐ

filter

ex. coding ์ด๋ผ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋“  ๊ธ€์„ ์ฐพ๊ฒ ๋‹ค.

User.objects.filter(username='coding')

# ๐Ÿ‘Š๐Ÿป ๊ทธ๋Ÿผ! filter์™€ get์˜ ์ฐจ์ด๋Š”?
# ๊ฐ’์ด ์—†์„ ๋•Œ, filter๋Š” ๋นˆ ์ฟผ๋ฆฌ์…‹์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ , get์€ DoesNotExist๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šด๋‹ค.

exclude(<-> filter)์™€ ๋ฐ˜๋Œ€

username์ด 'coding' ์ธ ์‚ฌ๋žŒ์€ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

User.objects.exclude(username='coding')

3. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ

save()

๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์›ํ•˜๋Š” value์— ํ• ๋‹น ํ•œ ๋’ค ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹

q = Question(question_text="What's new?", pub_date=timezone.now())
q.save()

์–ด๋ ค์šฐ๋‹ˆ๊นŒ ์ผ๋‹จ ์—ฌ๊ธฐ๊นŒ์ง€ ํ•ด์•ผ์ง€ ,, โœ‹๐Ÿปโœ‹๐Ÿปโœ‹๐Ÿป

์ฐธ๊ณ  : ์ดˆ๋ณด๋ชฝํ‚ค

profile
back-end ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€