본문 바로가기
  • 실행력이 모든걸 결정한다
Django

[Django] QuerySet에서 사용하는 '__'의 의미

by 김코더 김주역 2023. 2. 13.
반응형

1. Field Lookups

- exact, contains, in, gt, lt, startswith 등과 같은 필드 룩업을 사용하겠다는 의미

 

예시

Blog.objects.filter(name__startswith='Beatles')

 

더 많은 필드 룩업들을 살펴보려면 Field Lookups에 관한 아래 공식 문서를 살펴보길 바란다.

https://docs.djangoproject.com/en/4.1/ref/models/querysets/#field-lookups

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

 

 

2. 외래키 모델 속성 참조

- 외래키 모델의 속성을 참조할 때에도 속성명 앞에 '__'를 붙인다.

 

예시

다음과 같이 Employee의 외래키를 User로 지정했다고 하자. 속성명은 user다.

class Employee(models.Model):
    ...
    user = models.ForeignKey(User, on_delete=models.CASCADE)

User 객체의 username 속성값이 mark인 객체를 찾으려면 다음과 같이 접근하면 된다.

Employee.objects.filter(user__username = 'Kim Jooyeok')

 

 

참고로, 위에서 설명한 두가지 방법을 한 번에 같이 사용할 수도 있다. 아래 예시에서는 User 객체의 username이 'Kim'으로 시작하는 Employee 객체들을 반환한다.

Employee.objects.filter(user__username__startswith = 'Kim')

 

반응형

댓글