[Error๐Ÿค”]Django - circular dependency ๋ฌธ์ œ

์—ฌ์ฃผ๋งยท2021๋…„ 1์›” 6์ผ
1

Error

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

models.py๋ฅผ ์ž˜ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด์ œ makemigration, migrate๋ฅผ ํ•ด๋ณด์ž

ImportError : cannot import name 'User' from partially initialize modul "user.models' (most likely due to a circular import)

circular dependency

๊ฐ๊ฐ์˜ ์•ฑ์— ์žˆ๋Š” 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๋ฅผ ๋ณด๋ฉด์„œ ์ €๊ฑธ ์™œ ์ €๋Ÿฐ์‹์œผ๋กœ ์“ฐ์…จ์ง€? ๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์ด๋ถ€๋ถ„์ด์˜€๋‹ค. ์™œ ์“ฐ๋Š”์ง€, ๊ทธ ํ•„์š”์„ฑ์„ ์•Œ ๊ฒŒ ๋˜์–ด์„œ ๋ฟŒ๋“ฏ!

profile
๐ŸŒฑBackend Developer๐Ÿ‘ฉโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€