Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- codepipeline 오류
- ncp 401 authentication failed
- 파이썬여러버전변경
- 파이썬 설치경로 변경
- codebuild cliend_error
- rds utf8mb4 변경
- 티스토리챌린지
- command did not exit successfully docker-compose -f docker-compose.yml build exit status 1
- ncp api 응답오류
- 파이썬버전여러개
- rds character_set 변경
- {'error': {'errorcode': '200'
- 오블완
- 'message': 'authentication failed'
- vscode소스제어 무한로딩
- codebuild no matching artifact paths found
- vscode시계아이콘
- fcm push
- fcm 멀티푸시
- 네이버클라우드 authentication failed
- 파이썬 경로 수정
- 맥북파이썬여러버전
- 파이썬버전변경
- route53 서브도메인
- vscode 소스제어
- rds 파라미터그룹
- ncp authentication failed
- fcm multicast
- 'details': 'invalid authentication information.'}}
- vscode무한로딩
Archives
- Today
- Total
All that I've dreamed of
[Django] Q객체로 filter() 사용하기 본문
반응형
group = Workgroup.objects.get(pk=group_pk)
# q 객체 생성
q = Q()
>>> users = group.user_set.annotate(user=F("pk")).values("user")
<QuerySet [{'user': 1}, {'user': 24}]>
for user in users:
q |= Q(**user)
그룹에 속한 유저의 유저의 pk만 가져올 건데 그냥 values("user") 만 쓰면
{'pk': 1} 이렇게 필드 값이 key 값으로 들어가게 된다
>>> users = group.users.values("pk")
>>> users
<QuerySet [{'pk': 1}, {'pk': 24}]>
>>> users
<QuerySet [{'pk': 1}, {'pk': 24}]>
저 key값을 변경하고 싶으면 annotate 와 F객체를 사용해 주면 된다
pk 를 user 로 변경했다. (Today 모델의 user 필드를 사용해야 하기 때문에...)
* 조건에 해당되는 모든 유저를 가져올 것이기 때문에 OR 연산자인 |= 를 사용했다. (AND는 &= 를 쓰면 된다)
* q 객체에 값을 넣으려면 q |= Q(key=value) 형태로 넣어줘야 하기 때문에 **언패킹을 사용했다.
그러면 'user': 1 이 user=1 로 들어가게 된다
아래와 같이 filter 함수에 q 변수를 넣어주기만 하면 된다.
todays = Today.objects.filter(q, created_at__contains='2022-12-10')
=> 2022-12-10 작성된 투데이 중에서 user = 1 이거나 user = 24 인 것을 가져온다.
'Django' 카테고리의 다른 글
[Django] VSCode Debug 디버깅 사용하기 (0) | 2023.02.20 |
---|---|
Django React 백엔드 - 클라이언트 쿠키공유 (서브도메인, Cors헤더, csrf설정) (0) | 2023.01.05 |
[Django] MySQL 연동 (Docker 컨테이너) (0) | 2022.11.16 |
[Django] filter() 함수 AND / OR (0) | 2022.11.08 |
Django openpyxl로 생성한 엑셀파일 templates으로 보내기 (0) | 2022.07.04 |
Comments