-
Django UniqueConstraintDjango 2022. 10. 7. 16:06
번호표라는 모델이 있다고 가정해보자
순서를 정확히 정하기 위해 번호표에 번호는 유니크해야 할 것이다.
class Numberticket(models.Model): user = models.ForeignKey() number = models.PositiveIntegerField(unique=True)번호표의 번호를 유니크하게 하려면 모델에 필드에 unique=True 옵션을 주면 번호는 유니크하게 된다.
또 다른 생각을 해보자
매일 새로운 번호표를 만들어주기위해 날짜가 있고 각 날짜에 번호표가 유니크하게 필요하다고 가정해보자
그렇다면 날짜, 번호를 묶어서 유니크한 필드로 구성해야 할 것이다.
django 에서는 unique_together, UniqueConstraint로 2개 이상의 필드를 묶어 유니크하게 동작하도록 할 수 있다.
그러나 장고 공식 문서에 따르면 UniqueConstraint를 사용하는 것을 권장한다.
그 이유로는 unique_together에 이렇게 명시되어 있다.
- 대신 constraints 옵션과 함께 UniqueConstraint를 사용하십시오.
- UniqueConstraint는 unique_together보다 더 많은 기능을 제공합니다.
- unique_together는 향후 더 이상 사용되지 않을 수 있습니다.
권장하는 방식으로 구현해보자
class Numberticket(models.Model): user = models.ForeignKey() number = models.PositiveIntegerField() date = models.DateField() class Meta: constraints=[ models.UniqueConstraint( fields=["date", "number"], name="date_numberticket" ) ]위의 예시대로 구현해볼 수 있다.
번호표의 각 날짜별 번호는 유니크하게 구성된다.
'Django' 카테고리의 다른 글
Django Redis cache (1) 2023.01.03 Django timezone (0) 2022.10.14 Django Signal (1) 2022.09.29 Django unittest pytest (0) 2022.09.28 Django ORM Manager, QuerySet (2) 2022.09.26