Q는 장고 model orm으로 mysql에서 where절에 or문을 추가하고 싶을 때 사용(and, not도 가능
예시
from django.db.models import Q
class ProductListView(View):
def get(self, request):
search_keyword = request.GET.get("search")
q = Q()
if search_keyword:
q &= Q(kr_name__contains=search_keyword) | Q(en_name__contains=search_keyword)
q &= Q(kr_name__contains=search_keyword) & Q(en_name__contains=search_keyword)
Products.object.filter(Q(name='backpack')|Q(price='9900'))
# 네임이 backpack 이거나 가격이 9900원인 것
== 동일한 결과가
SELECT * FROM products WHERE name='backpack' or price='9900'
q조건 연결
q = Q(no=1)
q.add(name='back', q.OR)
# no=1 or name = 'back'
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()
F사용
SELECT a, b, c, d
FROM product
WHERE a=c
from django.db.models import F
product.objects.filter(a=F('c'))