Q๋ ์ธ์ ์ฌ์ฉํ ๊น?
Q๋ ์ฅ๊ณ model orm์ผ๋ก where ์ ์ or๋ฌธ์ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
from django.db.models import Q
# Q๋ฅผ ๋จผ์ ์ํฌํธ ํด์ค์ผํ๋ค.
Products.object.filter(Q(name='backpack')|Q(price='9900'))
# ๋ค์์ด backpack ์ด๊ฑฐ๋ ๊ฐ๊ฒฉ์ด 9900์์ธ ๊ฒ
== ๋์ผํ ๊ฒฐ๊ณผ๊ฐ
SELECT * FROM products WHERE name='backpack' or price='9900'
Products.objects.filter(Q(name='backpakc') & Q(no=12312))
> 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค
> exclude()
> filter(~Q())
ex. id < 5 ๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ๋ชจ๋ ์ฌ์ฉ์
1. exclude()
>> queryset = User.objects.exclude(id__lt=5)
2. filter(~Q())
>> from django.db.models import Q
>> queryset = User.objects.filter(~Q(id__lt=5))
Q๋ฅผ ์ฒ์์ ์ ์ธํ ํ, add ๋ก ๊ฐ์ ์ถ๊ฐํ ๋ ์ฒ์ ์ ์ธ๋ ์์ ์กฐ๊ฑด๊ณผ ์ฐ๊ฒฐ๋๋ค.
q = Q(no=1)
q.add(name='back', q.OR)
# no=1 or name = 'back'
F()๊ฐ์ฒด๋ ์ธ์ ์ฌ์ฉํ ๊น?
ํ์ด์ฌ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค์ง ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ์์ ์ ์ฒ๋ฆฌํ ๋
๊ฐ๋จํ ์์
# F๋ฅผ ์ฌ์ฉํ์ง ์์ ๋
reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed += 1
reporter.save()
# F๋ฅผ ์ฌ์ฉํ ๋
from django.db.models import F
reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = F('stories_filed') + 1
reporter.save()
SELECT a, b, c, d
FROM product
WHERE a=c
f()๋ฅผ ์ฌ์ฉํด์ ํํํ๋ค๋ฉด
from django.db.models import F
product.objects.filter(a=F('c'))
์์ง ์ ๋ฆฌ์ค,,,
ํฌ์คํ ๊ฐ์ฌํฉ๋๋ค.