문제

오늘의 두 번째 별로 능숙하지 않은 질문:4개의 앱이 설치된 django 프로젝트가 있습니다.Manage.py syndb를 실행하면 그 중 두 개에 대한 테이블만 생성됩니다.내가 아는 바로는 내 모델 파일에는 문제가 없으며 모든 앱은 내 설정 파일의 INSTALLED_APPS에 지정되어 있습니다.Manage.py syndb가 내 앱 중 두 개를 무시하는 것 같습니다.

두 "무시된" 앱의 독특한 점 중 하나는 모델 파일이 다른 두 앱에서 모델을 가져와서 외래 키로 사용한다는 것입니다(이것이 좋은지 나쁜지는 모르겠지만 정리하는 데 도움이 됩니다).외래 키가 있는 모델을 주석 처리했지만 테이블이 아직 생성되지 않았기 때문에 그것이 문제라고 생각하지 않습니다.나는 어리둥절하다.

업데이트:다른 앱에서 모델 파일을 가져오는 행을 주석 처리하면 syndb가 내 테이블을 생성합니다.아마도 별도의 앱에 있는 모델 파일이 다른 앱과 어떻게 관련되어 있는지 이해하지 못할 수도 있습니다.다른 앱의 모델을 간단히 가져와서 외래 키로 사용하는 것은 괜찮았습니다.사실이 아니다?

도움이 되었습니까?

해결책

불행하게도, models.py에 가져오기 오류가 있는 앱을 Manage.py가 자동으로 로드하지 못합니다(티켓 #10706).models.py 파일 중 하나에 오타가 있을 가능성이 있습니다...모든 import 문을 자세히 확인하세요(또는 pylint를 사용하세요).

최근에 syncdb가 내 앱 몇 개 로드를 중단했고 sqlall에서 "foo 라벨이 있는 앱을 찾을 수 없습니다"라는 오류가 표시되었습니다.이것이 때때로 "foo라는 레이블이 있는 앱을 찾았지만 ImportError가 발생하여 로드할 수 없습니다"라는 의미라는 것을 모르고 다음 중 하나에서 'hashlib' 대신 'haslib'를 가져오려고 한다는 것을 깨닫는 데 30분이 걸렸습니다. 내 models.py 파일.

다른 팁

비슷한 것을 만난 것 같아요.

모델이 재설정되지 않는 문제가 있었습니다.이 경우 내 모델에 뱉어지지 않은 오류가 있는 것으로 밝혀졌습니다.

내 생각엔 syncdb가 실행될 때 일종의 오류가 발생한다고 생각합니다.

어떤 경우든 셸에서 모델 파일을 가져오고 가능한지 확인하세요.

$ manage.py shell
>>> from myapp import models
>>>

파일에 오류가 있으면 이를 지적해야 합니다.

귀하의 업데이트에 따르면 교차 수입 문제가 있는 것 같습니다.대신에:

from app1.models import X

class ModelA(models.Model):
    fk = models.ForeignKey(X)

노력하다:

class ModelA(models.Model):
    fk = models.ForeignKey("app1.X")

...내 생각에는 syncdb에서 오류가 발생해야 한다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top