[Django] Circular import Error

토닉·2021년 5월 23일
0

Django

목록 보기
6/6
post-thumbnail

django를 통해 models을 작성하다보면 앱들이 서로 import 해야하는 상황을 마주하게 된다.
이 때 실행하게 되면 import를 할 수 없다는 에러가 뜨면서 circular import를 해결해야 될거라고 hint를 줍니다.

해결

django에서 제공하는 문자열 방법으로 다른 앱의 모델을 참조한다.
ex) ForeignKey, ManyToMany

  • "product.Product" —> from product import Product
# product/models.py
from django.db import models

class Product(models.Model):
	comment = models.ManyToManyField(**"user.User"**, through="Comment", related_name="product")

class Comment(models.Model):
	product = models.ForeignKey("Product", on_delete=models.CASCADE)
	user    = models.ForeignKey("User", on_delete=models.CASCADE)
# user/models.py
from django.db import models

class User(models.Model):
	wishlist = models.ManyToManyField(**"product.Product"**, through="WishList", related_name="user")

class WishList(models.Model):
	user = models.ForeignKey("User", on_delete=models.CASCADE)
	product = models.ForeignKey("Product", on_delete=models.CASCADE)

다행히 장고에서는 위 코드처럼 쉽게 circular import error를 해결할 수 있습니다.
모델에서 class를 import 할 때 장고는 import를 사용하지 않고 문자열을 통해 다른 앱의 class에 연결할 수 있습니다.

profile
우아한테크코스 4기 교육생

0개의 댓글

관련 채용 정보