models.py๋ฅผ ์ ๋ง๋ค์๋ค. ์ด์
makemigration
,migrate
๋ฅผ ํด๋ณด์
ImportError : cannot import name 'User' from partially initialize modul "user.models' (most likely due to a circular import)
๊ฐ๊ฐ์ ์ฑ์ ์๋ models.py๋ ์๋ก ์ฐ๊ด์ฑ์ด ์๋ค. Django๋ ํ์ผ์ ์คํ์ ํ์ด์ฌ ์ฝ๋๋ฅผ ํ์คํ์ค ์์๋๋ก ์ฝ์ด๊ฐ๋ฉฐ Importํด์ค๋๋ฐ, ๋ง์ผ ์ด๋ ์์๊ฐ ๋ฌดํ๋ฃจํ์์ผ๋ก ๋ฐ๋ณต๋ ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ๋๋ค
์์ ์์์ฒ๋ผ A,B,C,D๊ฐ A - > B -> C - > D - > A ์ ์์๊ฐ ๋๋ฒ๋ฆฌ๋ฉด Django๋ ์ด ํ์ผ์ ๋ฌดํ์ด ์ฝ๊ฒ๋๊ณ ์์ ์๋ฌ๋ฅผ ๋ธ๋ค.
#A๋ชจ๋ธ
from user.models import User
class Product(models.Model):
product = models.Foreingkey(User, on_delete=models.CASCADE)
#B๋ชจ๋ธ
from product.models import Product
class User(models.Model):
user = models.Foreingkey(Product, on_delete=models.CASCADE)
ํด๋น๊ฒฝ์ฐ๋ A๋ชจ๋ธ๊ณผ B๋ชจ๋ธ์ด ์๋ก๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ์ธ๋ฐ
์ด์ํฉ์์ make migration
์ ํ๊ฒ ๋๋ฉด Django๋ ๋ฌด์์ importํ ์ง ๋ชจ๋ฅด๋ ์ํฉ์ด ๋๊ณ Error๋ฅผ ๋ธ๋ค.
์ ์ผ ๊ธฐ๋ค๋ ธ์ ํด๊ฒฐ๋ฐฉ๋ฒ!
์๊ฐ๋ณด๋ค ์ฌํํ๋ค
๋์ค์ ํ๋์ ๊ฒฝ๋ก๋ฅผ ์ด~์ง ์์ ํด์ฃผ๋ฉด ๋๋ค
[๋ณ๊ฒฝ์ ]
#B๋ชจ๋ธ
from product.models import Product
class User(models.Model):
user = models.Foreingkey(Product, on_delete=models.CASCADE)
[๋ณ๊ฒฝํ]
#B๋ชจ๋ธ
#from product.models import Product <-์ญ์
class User(models.Model):
user = models.Foreingkey('product.Product', on_delete=models.CASCADE)
๋ณ๊ฒฝํ์ ์์์ ๊ฐ์ด Foreingkey ํ๋์ ๋ชจ๋ธ ๋ถ๋ถ์ 'app_name.Model_name'
์ ์ ์ด์ฃผ๋ฉด ํด๋น model์ rํ์์์ ์ํฌํธ ํด ์ค๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๋ฅผ ๋์ฐ์ง ์๋๋ค
๊ฐํน ์ ๋ฐฐ๊ธฐ์์ github๋ฅผ ๋ณด๋ฉด์ ์ ๊ฑธ ์ ์ ๋ฐ์์ผ๋ก ์ฐ์ จ์ง? ๋ผ๊ณ ์๊ฐ๋๋ ๋ถ๋ถ์ด ๋ฐ๋ก ์ด๋ถ๋ถ์ด์๋ค. ์ ์ฐ๋์ง, ๊ทธ ํ์์ฑ์ ์ ๊ฒ ๋์ด์ ๋ฟ๋ฏ!