두 개의 테이블 : Project와 Contract가 있습니다. 하나의 프로젝트로 인해 계약이 체결됩니다. 또한 계약이 연장되어 이전 계약과 관련된 다른 계약으로 이어질 수 있습니다. 그래서 나는 다음과 같은 것을 사용할 수 있다고 생각한다 : contract = models.ManyToManyField ('self')Django M2M은 테이블의 확장 버전을 관련시킵니다.
어떤 생각?
감사합니다.
두 개의 테이블 : Project와 Contract가 있습니다. 하나의 프로젝트로 인해 계약이 체결됩니다. 또한 계약이 연장되어 이전 계약과 관련된 다른 계약으로 이어질 수 있습니다. 그래서 나는 다음과 같은 것을 사용할 수 있다고 생각한다 : contract = models.ManyToManyField ('self')Django M2M은 테이블의 확장 버전을 관련시킵니다.
어떤 생각?
감사합니다.
요구 사항에 따라 다릅니다. 계약으로 다른 계약 또는 다른 계약이 발생할 수 있습니다 S? 그것은 매우 중요한 질문입니다. 계약 A가 다른 계약 B (다른 계약에는 적용되지 않음)로 이어질 수 있고 새 계약 B가 계약 A에서만 확장 될 수 있다고 가정하면 OneToOneField ('자체')가 적합합니다.
계약 A가 계약 B로 이어질 수 있고 계약 C 또는 계약 D 인 경우 ForegnKey ('자체')를 사용해야합니다. 그러나 계약 B가 계약 A뿐만 아니라 계약 E 또는 계약 F 및 계약 G까지 추적 될 수 있다면 ManyToManyField ('자체')가 필요합니다.
우선 1 : 1, 1 : n 또는 m : n 관계인지 먼저 명확히하는 것이 기본적인 질문입니다. 이것을 알아 내면 올바른 대답을 얻을 수 있습니다.
제공하신 정보를 통해 나는 옳은 방법이 무엇인지 모호하게 예측할 수 있습니다.
제 대답이 당신을 도울 수 있기를 바랍니다.
안녕하세요, @cezar, 답장을 보내 주셔서 감사합니다. 나는 다른 계약으로 연장 될 수있는 계약을 가지며, 다른 계약으로 이어질 수 있습니다. 각 연장 계약은 이전 계약에서 확장되지 않고 첫 계약에서 연장됩니다. 예를 들어, 계약은 끝나지 만 확장되어 이전 계약과 관련되어야합니다. 게다가, 각 계약은 항상 한 사람 (모든 연장 계약에서 동일한 사람)과 관련되어야합니다. 그래서, 귀하의 옵션에 따라 최선의 선택, ForeignKeyField ('자기')를 사용하는 것 같아요. 도와 주셔서 감사합니다. – loar
이 경우 가장 좋은 옵션은 OneToOneField ('self')입니다. 당신이 말한대로 계약은 다른 계약으로 확장 될 수 있지만 다른 계약으로 확장 될 수는 없습니다 ** S **. 두 번째 계약은 세 번째 계약으로 연장 될 수 있지만 세 번째 계약은 첫 번째 계약과 관련이 없습니다. 이는 하나의 계약이 하나의 확장 계약을 가질 수 있음을 의미하고, 확장 계약은 오직 하나의 전임 계약 만 가질 수 있음을 의미합니다. 1 : 1 관계의 명확한 경우. – cezar