2. QuerySet의 고급 사용법 및 모델 관계
2.1 참조와 역참조
- 참조(Reference): Django 모델에서 ForeignKey, OneToOneField, ManyToManyField를 사용하여 모델 간의 관계를 설정한다. 예를 들어, 한 Post가 여러 Comment를 가질 수 있으며, 이는 Comment 모델이 Post 모델을 ForeignKey로 참조하는 방식으로 구현된다.
- 역참조(Reverse Reference): 참조된 모델을 통해 참조한 모델의 데이터를 역으로 조회할 수 있다. 기본적으로 _set을 사용하지만, related_name을 설정하면 더 직관적인 이름을 사용할 수 있다.
2.2 QuerySet 필터링과 조건
- 고급 필터링: Django QuerySet에서 다양한 필터 조건을 사용할 수 있다. 대표적인 예로 __contains, __startswith, __in, __range 등이 있다. 각 필터링 방법은 문자열 포함 여부, 시작 여부, 특정 값 포함 여부, 값의 범위 등을 기준으로 데이터를 필터링한다.
- Q 객체를 사용한 복잡한 조건 처리: Q 객체를 사용하여 AND, OR 같은 복합적인 조건을 적용할 수 있다. 예를 들어, 제목이 "Django"로 시작하거나 작성자가 "admin"인 포스트를 조회할 때 Q 객체를 사용한다.
배운 점
- Django의 참조와 역참조는 모델 간의 관계를 직관적으로 다룰 수 있게 하며, related_name을 사용하면 코드 가독성이 향상된다.
- QuerySet 필터링에서 다양한 조건문을 결합하는 방법을 통해 복잡한 데이터 조회가 가능하며, 특히 Q 객체를 사용한 조건 처리로 보다 유연한 필터링을 할 수 있다.
'Daily note' 카테고리의 다른 글
Today I Learned(TIL)-55 (1) | 2024.09.11 |
---|---|
Today I Learned(TIL)-54 (0) | 2024.09.09 |
Today I Learned(TIL)-52 (1) | 2024.09.06 |
Today I Learned(TIL)-51(오답노트) (1) | 2024.09.04 |
Today I Learned(TIL)-50 (0) | 2024.09.04 |