๊ณ ์ ํ ํ๋๊ฐ์ ์ฐพ์ ๋ ์ฌ์ฉ
๋ง์ฝ์ ์ ์ ๋ค์์ด ์ ๋ํฌํ ์ฌ๋์ ์ฐพ๋๋ค ๊ฐ์ ํ๋ค๋ฉด
queryset = models.User.objects.all().filter(username="admin")
์ด๋ฐ์์ผ๋ก ์ฐพ์ ์๋ ์๊ฒ์ง๋ง
ํน์ ๊ฐ์ ์ฐพ๋๊ฒ ์๋ ๊ทธ๋ฅ ์ ๋ํฌํ ๊ฐ๋ง ์ฐพ๊ณ ์ถ๋ค๋ฉด
์ ๋ฒ์์ ์ฌ์ฉํ๋ annotate๋ฅผ ์ฌ์ฉํด์ ์ฐพ์์ฃผ๋ฉด ๋๋ค .
queryset = User.objects.values(
'username'
).annotate(
name_count=Count('username')
).filter(name_count=1)
์์์ ์ฌ์ฉํ ๋ฐฉ์๊ณผ ๊ฐ์ ๋ฐฉ์์ด๋ฉฐ, count๊ฐ ์ผ์นํ๋ ๊ฑธ ์ฐพ์์ฃผ๋ฉด
์ฟผ๋ฆฌ์
์ ์ฐพ์์ค ์ ์๋ค.
์ ๋ฒ์ ๋ดค๋ or ๊ณผ and ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ์์ด
์ฝ๋๋ฅผ ๋ ๊ฐ๋จํ๊ฒ ํํํด ์ค๋ค.
์ฅ๊ณ ์ฟก๋ถ์์๋ ์ด๋ฐ์์ผ๋ก ์ค๋ช
์ด ๋์์์ด์
์ ํํ Q๊ฐ ์ด๋ค ์ฉ๋๋ก ์ฐ์ผ๊น ๊ถ๊ธํ๋ค
๊ทธ๋์ ์ ์ฝ๋์์... ์์ฝ๋?
์ํผ ์์ ์ฝ๋์์ Q๋ฅผ ์ ๊ฑฐํ ์ํ๋ก ํ ์คํธ๋ฅผ ํด๋ดค๋ค
?? ๋ ์ด์ํ๋ค
๋ญ์ง??
Q๊ฐ ๋ญ๊น ์ฐพ๋์ค์ ๋ต์ ๋ฐ๊ฒฌํ๋ค.
์์ ๋๊ฐ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ์ผ ์ฒ์ ์ ์๋ ์ฝ๋๋ณด๋ค ์์ฌ ๊ฐ๋จํ๋ฐ
์ ์ผ ๋ฐ์ ์ฝ๋๋ ์ ๋๋ก ์๋ํ์ง๋ง, ๋ฐ๋ก ์์ ์ฝ๋๋ ์๋ํ์ง ์๋๋ค.
Q๊ฐ ๋ฌถ์ด ์ฃผ๋ ์ญํ ์ ํ๋ค๊ณ ๋ณด๋ฉด ๋ ๊ฒ๊ฐ๋ค.
์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๋งค์ง์ด๋ค
์ฝ๋๋ฅผ ์ง๊ณ๋ด ์ฃผ๋ ํจ์ ์ด๋ค.
์๋ฐ์์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค.
orm์ ๊ณต๋ถํด๋ณด๊ณ ๋ด๊ฐ ๋ง๋ ํ๋ก์ ํธ์ ์ ์ฉ ์์ผ๋ณธ๊ฒ ๋ช๊ฐ ์๋๋ฐ
aggregate๋ ํ๋ฒ๋ ์์ฐ๊ณ ๊ฑฐ์ annotate๋ง ์ฌ์ฉํ์๋ค.
์ด๋ฒคํธ ๊ฐ์ ๊ฑด๊ฐ?
๋ญ... ์ถ์ฒจ์ ํ๋ค๊ฑฐ๋ ๊ทธ๋ด๋ ์ฐ๊ธฐ ์ํด์ ๋ง๋ ๊ฑธ๊น ์ถ์๋ค
์ฌ์ฉ๋ฒ์ ๊ต์ฅํ ๊ฐ๋จํ๋ค
order_by๋ฅผ ์ด์ฉํด์ ์ ๋ ฌํ ๊ฒ์ ? ๋ก ์ฃผ๋ฉด ๋๋ค.
๋๊ฐ์ง ๋ชจ๋ ๋๋ค์ ๋ ฌ์ ์ ์ฉํ๊ณ ๋๋ ค๋ณธ ๊ฒฐ๊ณผ์ธ๋ฐ
๊ฒฐ๊ณผ๊ฐ ์๋ก ๋ค๋ฅธ ๊ฑธ ํ์ธํ ์ ์๋ค.
์ด๊ฑฐ๋ ๋ณด๊ณ ์ ์ค.. ์ด๋ฐ๊ฒ ์์๋ค ์ถ์๋ค
ํ์ฌ ์ ์ ์
์ฌ์ง์ด ๋ชจ๋ฅด์ง ๋ชปํ๋ค์ ์ด์ํ๋ค
์ด๋ฐ์์ผ๋ก bulk create๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฐ๋จํ๊ฒ ์ ์ ๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ง๋ค๊ณ ๋์ ๊ถ๊ธํ๋๊ฑด username๋ง ์ ์ด์ create๋ฅผ ํ๊ณ ,
๋น์นธ์ด ์๋๋ฐ ๋ง๋ค์ด ์ง๊น ์ถ์๋ค
๊ทธ๋์ admin ํ์ด์ง๋ก ๊ฐ์ ํ์ธ์ ํด๋ดค๋๋ฐ
์ ๋ง๋ค์ด์ง๋ค
์ด๋ฆ์ด a ์ b๋ก ์์ํ๋ ์ ์ ๋ ์บก์ณ๋ฅผ ์ํด ์ง์ ์ด์๐
์๋ง ๋ค๋ฅธ ๊ฑด ๋ค ๋ฌด์ํ๊ณ ๋ง๋๋๋ฐ๋ง ์ง์คํ๋ ๋
์์ธ๊ฐ ๋ณด๋ค
๊ธ์ด ๋๋ฌด ๊ธธ์ด ์ง๊น๋ด ๋๊ณ ์๋๋ฐ
๋ค ์ ๋ฆฌํ๊ฒ ๋๋ฉด 4๊ฐ์ ๋์ ๊ธ์ด ๋์ฌ ๊ฒ ๊ฐ๋ค
์ฟก๋ถ์ ๋ค ๋ณด๊ธฐ๋ ํ์ง๋ง, ์ ๋ฆฌํ๋ฉด์ ํ๋ฒ๋ ๋ณต์ตํด์ผ์ง
Hello, I enjoy reading all of your article. I like to write a little comment to support you.JOKER123