2009-09-16 2 views
4

제 두 번째로 숙달되지 않은 질문입니다. 설치 한 앱이 4 개인 django 프로젝트가 있습니다. manage.py syndb를 실행하면 두 개의 테이블 만 생성됩니다. 내 지식으로는 내 모델 파일에는 문제가 없으며 모든 설정은 설정 파일의 INSTALLED_APPS에 지정되어 있습니다. Manage.py syndb는 내 앱 중 두 가지를 무시하는 것 같습니다.manage.py syncdb는 일부 모델에 대한 테이블을 추가하지 않습니다.

두 가지 "무시 된"앱에 대해 고유 한 점은 모델 파일이 다른 두 앱에서 모델을 가져 와서 외래 키로 사용한다는 것입니다 (이 방법이 좋고/나쁜 방법인지는 모르지만 나에게 도움이됩니다. 체재하다). 나는 그것이 문제라고 생각하지 않는다. 왜냐하면 나는 외래 키가있는 모델을 주석 처리했기 때문에 테이블은 아직 생성되지 않았다. 나는 혼란 스럽다.

업데이트 : 다른 앱에서 모델 파일을 가져 오는 라인을 주석 처리 할 때 syndb이 테이블을 만듭니다. 다른 앱에서 모델 파일이 다른 앱과 어떻게 관련되어 있는지에 대해 이해하지 못하고있는 것 같습니다. 나는 다른 앱의 모델을 단순히 외래 키로 사용하여 가져온 것이지만 괜찮 았지만. 사실이 아니다?

+1

해당 앱에 대해 manage.py sqlall [appname]을 실행하면 결과가 표시됩니까? –

+0

좋은 질문 - 아니오 출력이 없습니다. 하지만 앱 폴더의 이름을 변경하고 syncd를 실행하면 변경된 앱을 찾을 수 없다는 오류가 표시됩니다. – twneale

답변

6

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

최근에 syncdb가 내 응용 프로그램 몇 개를로드하는 것을 멈추었습니다. sqlall은 "라벨 foo가있는 앱을 찾을 수 없습니다"라는 오류 메시지를 보냈습니다. 이것은 때때로 "레이블 foo가있는 응용 프로그램이 발견되었지만 가져 오는 ImportError로 인해로드 할 수 없습니다"라는 것을 알지 못했지만, "hashlib"대신 "haslib"를 가져 오려고 시도하는 것을 30 분이나 걸렸습니다. 내 models.py 파일.

+0

이것은 Django의 버그로 간주되어야합니다. http://code.djangoproject.com/ticket/10706 –

+2

하하하 : 제가이 똑같은 문제가있었습니다 다시, googled, 그리고이 같은 대답을 발견했습니다. – twneale

8

나는 비슷한 것을 보았다고 생각합니다.

모델이 재설정되지 않는 문제가있었습니다. 이 경우에는 내 모델에 침이 날아 가지 않고 있다는 오류가 있음이 드러났습니다.

비록 내가 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에 오류가 발생한다고 생각하지만.

관련 문제