1

마이그레이션에서 테이블이 생성되는 순서에 대해 질문이 있습니다. 모델 A에 연결하기 위해 모델 B에 ForeignKey이 있으므로 models.py에서 A, B 및 C의 순서로 모델을 작성합니다. 그런 다음 :Django makemigrations가 models.py에서 순서대로 모델을 생성하지 않습니다

python manage.py makemigrations app 

모든 모델을 만들 수 생성 된 마이그레이션 파일이 있습니다,하지만 순서는 다음과 같습니다

- Create model B 
- Create model C 
- Create model A 
- Add field a_name to b. 

models.py의 순서는 정말 중요한 것처럼, 그런데 왜이 makemigrations 추적을하지 않습니다 주어진 순서?

+1

왜 models.py에서 순서가 중요합니까? 여전히 마이그레이션 파일과 관련이 있습니까? – knbk

+0

@knbk, 모델 B에서 ForeignKey를 사용하기 때문에 모델 A가 B보다 먼저 생성되어야합니다. 모델 B에서 순서 문제를 피하기 위해 A를 사용할 수 있지만 여기서는 models.py의 올바른 순서로 모델을 작성합니다. – zhihong

답변

1

모델을 models.py에 배치하는 순서는 다른 모델 중 하나가 ForeignKey으로 참조되는 경우에만 중요합니다. 그러한 상황에서는 주문이 중요하며 이주가 주문을 보존한다는 것을 알게됩니다.

무엇이 정말로 중요합니까? anage.py makemigrations을 할 때 나타나는 것이 아니라 manage.py migrate을 수행하면 어떻게됩니까? 장고는 보통 올바른 순서를 찾습니다. 언제든지 테이블이 생성되는 순서를 제어하려는 경우 (실제로는 필요하지 않지만) 마이그레이션 파일을 자유롭게 편집 할 수 있습니다.

+0

예, ForeignKey를 사용 했으므로 models.py에서 모델 순서를 제어하는 ​​것입니다. . 그러나 자동 생성 된 마이그레이션 파일은 순서를 따르지 않습니다. 그래서 정상적인 경우입니다, 그렇죠? 나를 위해, 그것은 약간 혼란 스럽다. 나는 "모델 생성"만 볼 것이지만 "모델에 모델 추가 필드를 생성"하는 것을 원하지는 않습니다. 이것은 테이블을 생성하고 수정하는 것과 같습니다. – zhihong

+0

아, 알겠지만 마이그레이션이 수정 될 수 있다는 것을 알고 있지만 실제로 필요한 경우 마이그레이션하지 않을 것이라고 말씀 드렸습니다. 설명에 감사드립니다. – zhihong

+0

안녕하세요, 데이터베이스의 테이블을 만들 때 열의 순서를 제어해야하지만 manage.py makemigrations는 열이 ForeignKey 열일 때 순서를 예약하지 않으므로 마이그레이션 파일을 수정했습니다. 마이그레이션 파일에 모델이 있고 열이 models.py의 순서를 따르길 바랄 뿐이지 만 그렇지 않은 것 같습니다. – zhihong