728x90
exclude안에 두 개의 조건을 넣고 코드를 잘 넣어줬는데도 조건이 먹히지 않는 경우가 발생했다.
.exclude(id__in=OwnerPlace.objects.values_list('place'),
categories__id=exclude_category.id)
.exclude(Q(id__in=OwnerPlace.objects.values_list('place'))
| Q(categories__id='a78312ef-865e-4e87-ae2c-d761131f4ae5'))
exclude는 기본적으로 and 조건으로 여러 조건을 결합하기에, 두 개의 조건을 넣게 되면 두 조건을 만족하는 객체 만이 대상에서 제외 되기 때문에 앞의 현상이 발생했던 것이다.
그래서 밑의 코드와 같이 Q객체를 이용해 or 조건을 생성해서 exclude함수에 전달합니다.
이렇게 되면 두 가지 조건 중 하나를 만족하게 되면 객체를 제외해서 원하는 결과 값을 기대할 수 있습니다.
'Django > orm' 카테고리의 다른 글
Django date range (0) | 2024.02.01 |
---|---|
F() (0) | 2024.01.24 |
len() vs count() (0) | 2024.01.19 |
검색 기능 splite기능 annotate만들어서 사용 (2) | 2024.01.02 |
Django Model (0) | 2023.12.19 |