UniqueConstraint에 대한 설명과 django Model클래스의 Meta 클래스에 대한 설명은 아래의 글을 통해 확인할 수 있습니다.
UniqueConstraint 사용 예시
1. True이면서 고유한 경우만
class Employee(models.Model):
name = models.CharField(
max_length=100,
)
department = models.ForeignKey(
Department,
on_delete=models.CASCADE,
)
is_manager = models.BooleanField(
default=False,
)
class Meta:
constraints = [
models.UniqueConstraint(
name="unique_manager",
fields=["department", "is_manager"],
condition=models.Q(is_manager=True),
),
]
이 예시는 Employee 모델이 있고 각 department에 고유한 관리자(manager)가 있는지 확인할 수 있는 예시입니다. 관리자인 경우(is_manager가 True)이면서, 고유한 department인지를 UniqueConstraint를 정의해서 확인할 수 있습니다.
2. null이면서 고유한 경우만
class MyModel(models.Model):
field1 = models.CharField(null=True)
field2 = models.CharField(null=True)
class Meta:
constraints = [
models.UniqueConstraint(
name="unique_fields",
fields=["field1", "field2"],
condition=models.Q(field1__isnull=False) & models.Q(field2__isnull=False),
),
]
기존 'unique_together'를 사용하면 null 값을 포함하는 필드 간에 고유성을 적용할 수 없었습니다. 하지만 'UniqueConstraint'에서는 null 값을 다룰 수 있습니다. 위의 예시는 'field1', 'field2' 둘 다 null이 아닌 값에만 적용되도록 하는 조건이 있습니다.
부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.
이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.
'Python > Django' 카테고리의 다른 글
FK 관계를 설정하는 방법 (0) | 2023.06.30 |
---|---|
(Django) reverse와 reverse_lazy 차이 (0) | 2023.06.23 |
Django로 비밀번호 유효성 검사 구현하기 (0) | 2023.06.17 |
Django Model에서의 Meta 클래스 (0) | 2023.04.04 |
Django의 admin 패널에서 모델 등록하는 두가지 방법 (0) | 2023.03.16 |