장고 개발을 할때 circular import(순환 임포트)가 발생하는 경우가 있습니다.

model 사이에 이게 발생한 경우에는 ForeignKey, ManyToManyField 등에 model 객체 대신 모델 이름 문자열을 넣어주면 됩니다 (django 문서)

model 사이 관계는 아니고, 그렇게 될 수밖에 없는 구조인 경우 django.apps의 get_model을 사용하면 됩니다 (stackoverflow)

from django.apps import apps
apps.get_model('app_label.model_name')

장고 1.7 미만 버전은 django.db.get_model('app_name', 'ModelName') 이걸 사용해야 한다고 하네요.

반응형