class Test(models.Model):
house = models.ForeignKey(
"house.House", verbose_name="집", on_delete=models.DO_NOTHING, db_constraint=False, db_index=False
)
name = models.CharField(max_length=50, verbose_name="이름", null=True)
title = models.CharField(max_length=50, verbose_name="제목", null=True)
class Meta:
verbose_name = "테스트"
verbose_name_plural = verbose_name
db_table = "test"
constraints = [
models.UniqueConstraint(fields=["id", "name", "title"], name="ux_testid")
]
위처럼 작성했을 때,
name, title이 같은 데이터로 들어갔을 때 duplicate 에러가 난다.
넣은 3개중 2개가 중복이라면 duplicate error 가 날 것이다.
첫번째 데이터로 name = "test", "title"="test",
두번째 데이터로 name= "test", "title"="test" 라면
두개의 컬럼 데이터가 중복이므로 duplicate error가 난다.
나의 경우에는
constraints = [
models.UniqueConstraint(fields=["house_id", "name", "title"], name="ux_houseid")
]
house_id는 각 집마다 공통이고, name을 중복값으로 넣었더니 2개가 중복인 데이터였으므로 duplicate error가 떴다.
해당 여러개의 컬럼을 중복키 설정할 때 유의해서 써야할 것 같다.
'Python > django' 카테고리의 다른 글
get_object 메서드 (0) | 2023.06.20 |
---|---|
count() 과 len() 차이 (0) | 2023.06.16 |
Django OneToOne Field 사용 지양하는 이유 (0) | 2023.05.24 |
Django Migration 사용 안하고 DDL 사용하기(2) (0) | 2023.05.17 |
Django Migration 사용 안하고 DDL 사용하기(1) (1) | 2023.05.16 |