Django Q() & F()

Jinsung·2021년 12월 12일
0

Q()

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()

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'))

0개의 댓글