파비의 매일매일 공부기록

장고 쿼리셋에서 F 모듈 활용 본문

Study/Python

장고 쿼리셋에서 F 모듈 활용

fabichoi 2022. 7. 21. 20:51
파이썬의 대표 웹 프레임워크인 장고에서 쿼리셋에서 쓰실 수 있는 작은 팁을 찾아서 공유하려고 한다.
테이블에 created, modified가 존재하는데, 흔하게는 created >= '2022-07-21' 같은 형태로 변수를 넣어서 쓴다.
그런데 해당 테이블의 다른 필드 값과 비교를 하려고 했는데..
어떻게 하는지 몰라서 구글링을 해봤더니 공식 문서에 F 모듈을 쓰면 된다고 나와 있다.
(https://docs.djangoproject.com/en/4.0/ref/models/expressions/#f-expressions)
만약 테이블에 created, modified가 존재할 때, created <= modified인 값만 찾으려고 한다면
from django.db.models import F
ArbitModel.objects.filter(modified__gte=F('created'))
하면 SQL Query를 매우 잘 만들어 준다.

그 외에도 레이스 컨디션을 피하거나, 쿼리 수를 줄일 때 활용할 수 있다고 한다.

반응형
Comments