I와 다음 데이터 구조를 가지고다중 동일한 상위 테이블 외래 키 있지만 고유 식별자
State
가state_id
및name
가진다. (실시 예 :California
)Town
가
Area
state_id
는,area_id
및name
있다. (실시 예 :Town of San Francisco
)Street
street_id
는,town_id
,area_id
,state_id
및name
있다.
town_id
,
area_id
,
state_id
및
name
을 갖는다 (일부 마을 샌프란시스코 포함
Area of San Francisco
예)
다음 참고
state_id
가 (자동 증가 INT와 같은) 실제 ID 아니지만, 각각의 상태에 대한 고정 된 수.area_id
은 자동 증분 int가 아니라 고정 숫자입니다. 이것은 두 개의 서로 다른 주 (여러 영역을 가질만큼 충분히 큼)가 동일한 ID를 가진 주를 가질 것임을 의미합니다. (샌프란시스코의 상태는 (area_id = 1
를 샌프란시스코있을 것이다)과 국가 뉴욕 NY있을 것이다 (area_id = 1
을).town_id
... 당신이 그것을 짐작,state_id
및area_id
와 동일합니다.
하지 마십시오 왜 데이터가 그런 식으로 구성되어 있는지 주장하고,이 질문의 범위를 넘어서서 내가 리팩터링 할 수있는 것 이상으로 넘어 간다. 그래서 내가 그것을 바꾸라고 제안하는 데 시간을 낭비하지 말라. 나는 이미 그것이 잘못되었다는 것을 알고 있지만, 완전히 멈출 수 없음. 전체 중지
즉, 도시에는 area_id
과이 둘 다 있어야합니다.그것은 식별 할 수 있습니다. 거리에는 town_id
, area_id
및 state_id
이 있어야합니다.
Django 모델과의 관계를 표현하려면 어떻게해야합니까? area.towns
을 수행하고 해당 지역의 마을을 모두 가져 오거나 state.streets
, 그 상태로 모든 거리를 얻을 수 있습니까?
질문이 명확하지 않으면 필요한 정보를 기꺼이 업데이트하여 기꺼이 알려주십시오.
ManyToManyField를 살펴 보셨습니까? https://docs.djangoproject.com/ko/1.11/topics/db/examples/many_to_many/ –
이 질문은 약간 이해하기 쉽습니다. 내가 맞으면, 아마도 unique_togather가 당신을 도울 수 있습니다 : https://docs.djangoproject.com/en/1.11/ref/models/options/#unique-together –