django에서 모델을 패키지화하여 작업중 migration이 안됐다.. docker와 dbeaver등 처음 사용해보는 툴로 인한 오류인지 계속해서 구글링하다가 결국은 역시나 간단한 문제였다!

ImportError: cannot import name 'UserSchedule' from partially initialized module 'calendars.models' (most likely due to a circular import) (/app/calendars/models/__init__.py)
디렉토리 구조

init.py
from .schedule import Schedule
from .user_schedule import UserSchedule
schedule.py
from django.db import models
from sales.models import CreateTime
from companies.models import Company, Contact
from users.models import User
from calendars.models import UserSchedule
class Schedule(CreateTime):
title = models.CharField(max_length=300)
content = models.TextField()
date = models.DateTimeField()
company = models.ForeignKey(Company, on_delete=models.CASCADE)
contact = models.ForeignKey(Contact, on_delete=models.SET_NULL, null=True)
user = models.ManyToManyField(User, through=UserSchedule) ## 문제부분
def __str__(self):
return self.title
class Meta:
db_table = 'schedules'
import 순서의 문제인거는 파악했고 user_schedule을 중간테이블로 참조하는 schedule모델과 schedule를 참조하는 user_schedule을 순서 문제없이 사용할 수 있을 까 고민하기 위해 __init__.py에 from . import *을 했지만 해결되지 않았다 ㅠㅠ

migration이 되는 듯 보이지만 calendars 앱을 인식못해 제외하고 migration이 된다 ㅠㅠㅠㅠ!!!
__init__.py는 그대로 두고 참조시 'UserSchedule'로 하면.. 끗........
from django.db import models
from sales.models import CreateTime
from companies.models import Company, Contact
from users.models import User
class Schedule(CreateTime):
title = models.CharField(max_length=300)
content = models.TextField()
date = models.DateTimeField()
company = models.ForeignKey(Company, on_delete=models.CASCADE)
contact = models.ForeignKey(Contact, on_delete=models.SET_NULL, null=True)
user = models.ManyToManyField(User, through='UserSchedule')
def __str__(self):
return self.title
class Meta:
db_table = 'schedules'

헤헤 그래도 해결해서 기분 쥬아~~~