Django ORM에서 던더(__)

언더스코어 두 개 (__)는 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=TrueUserProfiledepartment 필드의 is_it 속성을 필터링하는 부분입니다. __을 사용하여 관련된 모델인 Departmentis_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