我认为最好用一些代码来解释。请注意,数据之间略微奇怪的关系是一种黑客攻击,可以使用多对多关系进行内联。
应用“数据”具有以下models.py:
from crawler.models import CrawlJoin
class Website(models.Model):
hack = models.ForeignKey(CrawlJoin, null=True, blank=True, editable=False)
应用“抓取工具”具有以下models.py:
from data.models import Website
class CrawlJoin(models.Model):
pass
class Crawl(models.Model):
websites = models.ManyToManyField(CrawlJoin, through='Website')
如果我尝试迁移抓取工具或数据,我会收到以下错误:
ImportError: cannot import name 'CrawlJoin'
你知道如何解决这个问题吗?据我所知,我不应该得到这个错误...
谢谢。
答案 0 :(得分:3)
您有循环导入,因为两个模型模块都试图相互导入。您可以通过删除导入并使用外键中的字符串来中断循环导入:
hack = models.ForeignKey('crawler.CrawlJoin', null=True, blank=True, editable=False)