프로그래밍/Django & Flask
[Django] ImportError: cannot import name 'Class' from 'app.models' (클래스 간 circular dependency)
대인보우
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'으로 정의해주면 해결됨
반응형