Daily note

Today I Learned(TIL)-53

Jun.o 2024. 9. 9. 09:44

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