복붙노트

[PYTHON] django의 복합 기본 키

PYTHON

django의 복합 기본 키

복합 기본 키를 가진 레거시 db 테이블이 있습니다. 그 테이블을 사용하는 코드가 작성 되었기 때문에 대리 키를 포함하도록 구조를 변경할 수 있다고는 생각하지 않습니다. 그리고 장고에서는 기본 키 (비 합성)가 없기 때문에 테이블을 사용할 수 없습니다.

django 모델은 복합 기본 키를 지원합니까? 그렇지 않은 경우 테이블의 구조를 변경하지 않고 해결 방법이 있습니까?

추신 나는 postgresql을 사용하고있다.

해결법

  1. ==============================

    1.아래에서 비슷한 코드를 사용해보십시오.

    아래에서 비슷한 코드를 사용해보십시오.

    class MyTable(models.Model):
        class Meta:
            unique_together = (('key1', 'key2'),)
    
        key1 = models.IntegerField(primary_key=True)
        key2 = models.IntegerField()
    

    고유 한 혼합 필드 만 원하면 다음을 수행하십시오.

    class MyTable(models.Model):
        class Meta:
            unique_together = (('key1', 'key2'),)
    
        key1 = models.IntegerField()
        key2 = models.IntegerField()
    

    편집 : 나는이 접근법에 문제가 있다는 것을 알고 싶습니다 3 열이 있다면. 업데이트 쿼리가 작동하지 않습니다 ( "SET"다음에 pk 필드를 넣음) 고유 한 필드가 분명히 실패하므로 업데이트 쿼리가 작동하지 않습니다.

  2. from https://stackoverflow.com/questions/28712848/composite-primary-key-in-django by cc-by-sa and MIT license