-
[Django] ImportError: cannot import name 'Class' from 'app.models' (클래스 간 circular dependency)프로그래밍/Django & Flask 2020. 11. 30. 19:50반응형
User 클래스에 Post 클래스 기반 M:N 관계를 설정하려고 했는데 다음과 같은 에러가 발생했다.
ImportError: cannot import ~
찾아보니 해당 에러는 클래스간 circular dependency가 발생했기 때문이라고 한다.
post/models.py
from member.models import MyUser class Post(models.Model): # 글아이디는 자동생성 posting_writer = models.ForeignKey(MyUser, on_delete=models.CASCADE)
member/models.py
from post.models import Post class MyUser(AbstractUser): bookmark = models.ManyToManyField(Post)
이처럼 두 App의 클래스가 서로를 참조하려고 해서 발생하는 에러다.
A가 B를 참조하고,, B가 C를 참조하고,, 다시 C가 A를 참조해서 우선순위를 찾을 수가 없을 때 발생하는 에러!
다음과 같이 수정해준다.
class MyUser(AbstractUser): bookmark = models.ManyToManyField('post.Post')
import 한 걸 지워주고 'app_name.class_name'으로 정의해주면 해결됨
반응형'프로그래밍 > Django & Flask' 카테고리의 다른 글
[Django] debug=False로 수정하니 static, media 파일 날라감 (0) 2020.12.11 [Django] 웹 소켓 공부 log (0) 2020.12.01 [Django] 🤔 a 태그를 이용한 검색기능 구현중..... (0) 2020.11.30 [Django] 태그 검색🔎기능 만들기 (0) 2020.11.28 [Django] objects.filter에 다중값 넣기 (0) 2020.11.27