본문 바로가기
파이썬

파이썬 Django Unique Together (외래 키 포함)

by º기록 2020. 10. 19.
반응형

특정 규칙을 적용하기 위해 unique_together 의 메타 옵션을 사용하려는 상황이 있습니다. 다음은 중간 모델입니다.

class UserProfileExtension(models.Model):
    extension = models.ForeignKey(Extension, unique=False)
    userprofile = models.ForeignKey(UserProfile, unique=False)
    user = models.ForeignKey(User, unique=False)  

    class Meta:
        unique_together = (("userprofile", "extension"),
                           ("user", "extension"),
                           # How can I enforce UserProfile's Client 
                           # and Extension to be unique? This obviously
                           # doesn't work, but is this idea possible without
                           # creating another FK in my intermediary model 
                           ("userprofile__client", "extension"))

다음은 UserProfile입니다.

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    client = models.ForeignKey(Client)

감사.

 

해결 방법

 

당신은 할 수 없습니다.

unique_together 절은 SQL 고유 색인으로 직접 변환됩니다. 여러 테이블의 조합이 아닌 단일 테이블의 열에 만 설정할 수 있습니다.

하지만 직접 유효성 검사를 추가 할 수 있습니다. 간단히 validate_unique 메서드를 덮어 쓰고이 유효성 검사를 추가하면됩니다.


 

참조 페이지 https://stackoverflow.com/questions/4440010

 

 

반응형

댓글