Django์์ get() ๊ณผ filter() ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ฟผ๋ฆฌ๋ฅผ ํํฐ๋งํ๋๋ฐ ์ฌ์ฉ๋๋ค. ํ์ง๋ง ์ด ๋ ๋ฉ์๋๊ฐ์๋ ๋ช ๊ฐ์ง ์ค์ํ ์ฐจ์ด๊ฐ ์๋ค.
get() method
์ด ๋ฉ์๋๋ ์กฐ๊ฑด์ ๋ง๋ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋ ์ฌ์ฉ๋๋ค. ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ DoesNotExist ๋๋ MultipleObjectsReturned ์์ธ๋ฅผ ๋ฐ์์ํจ๋ค. get() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด์ ์กด์ฌ ์ ๋ฌด๋ฅผ ํ๋จํ ๋๋ try: except ๋ฌธ์ ์ฌ์ฉํ๋ค.
try:
obj = MyModel.objects.get(name='example')
# ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์์
except MyModel.DoesNotExist:
# ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์์
except MyModel.MultipleObjectsReturned:
# ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ ์์
filter() method
์ด ๋ฉ์๋๋ ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ๊ฒฐ๊ณผ๋ ์ฟผ๋ฆฌ์ ์ผ๋ก ๋ฐํ๋๋ค. filter() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด์ ์กด์ฌ ์ ๋ฌด๋ฅผ ํ๋จํ ๋๋ .exists() ์ ํจ๊ป ์ฌ์ฉํ๋ค.
objects = MyModel.objects.filter(name='example')
if objects.exists():
# ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์์
else:
# ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์์
๋ ์ค ์ด๋ค ๊ฒ์ ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ผ๊น?
filter() ๋ฉ์๋๋ ๋จ์ํ ์ฟผ๋ฆฌ์ ์ ๋ฐํํ๋ฏ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์์ฒญ์ ๋ณด๋ธ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๋๋ฐ ๋ ๋ง์ ์๊ฐ์ด ์์๋๋ค. ํ์ง๋ง exists() ๋ฉ์๋๋ ๋จ์ํ ๊ฒฐ๊ณผ์ ์กด์ฌ ์ฌ๋ถ๋ง ํ์ธํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ๋ ์ฐ์ํ๋ค.
get() ๋ฉ์๋๋ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋ฐ์์ํค๋ฏ๋ก ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์์ ๋์ ์ฒ๋ฆฌ๋ฅผ ์ํด ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. ๋ฐ๋ฉด์ filter().exists() ๋ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ ์์ธ ์ฒ๋ฆฌ๊ฐ ๋ฐ๋ก ํ์ํ์ง ์๋ค.
๋ฐ๋ผ์ ํน์ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ฒด๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด filter().exists() ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํ๊ณ ํจ์จ์ ์ด๋ค.
'Python > ๐ฆ Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] DRF ์๋ ํ๋ฆ (0) | 2023.11.23 |
---|---|
[Django] ์ฝ๋ฉ ์คํ์ผ (0) | 2023.09.04 |
[Django] Django Custom Command (0) | 2023.09.04 |
[Django] JWT๋ก ๋ก๊ทธ์์์ ๊ตฌํํด๋ณด์ (0) | 2023.09.04 |
[Django] QuerySet ์ดํดํ๊ธฐ - Lazy Loading, Caching, Eager Loading (0) | 2023.09.04 |