언더스코어 두 개 (__
)는 Django ORM에서 사용되는 문법입니다. 이를 "던더" 또는 "더블 언더스코어"라고도 합니다.
__
를 사용하여 필드 이름과 조건을 연결하여 데이터베이스 쿼리를 구성할 수 있습니다. 이를 통해 관련된 모델들 간의 관계를 표현하고, 필터링 또는 관련된 데이터를 가져올 수 있습니다.
예를 들어,
모델의 구조는 아래와 같습니다.
class Department(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
name = models.CharField(max_length=255)
is_it = models.BooleanField(default=False)
explain = models.CharField(max_length=255, blank=True, default="")
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
department = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True)
# ... 생략 ...
이 경우 it 부서의 유저 프로필만 가져온다면 아래와 같이 작성할 수 있습니다.
user_profiles = UserProfile.objects.filter(
department__is_it=True
)
department__is_it=True
는 UserProfile
의 department
필드의 is_it
속성을 필터링하는 부분입니다. __
을 사용하여 관련된 모델인 Department
의 is_it
필드에 접근하고 비교 조건을 설정합니다.
즉, __
를 사용하면 관련된 모델 간의 필드를 참조하고, 관련된 데이터를 가져오는 데 사용할 수 있습니다.
'Python > Django' 카테고리의 다른 글
get_user_model() (0) | 2023.07.22 |
---|---|
django 템플릿 <script>태그 (0) | 2023.07.08 |
Type hint 적용후 circular dependency 문제 해결법 (0) | 2023.06.30 |
FK 관계를 설정하는 방법 (0) | 2023.06.30 |
(Django) reverse와 reverse_lazy 차이 (0) | 2023.06.23 |