Python Django ImportError:无法导入名称';报告人档案';从部分初始化的模块';accounts.models';(很可能是由于循环进口)
我有两个应用程序名为Python Django ImportError:无法导入名称';报告人档案';从部分初始化的模块';accounts.models';(很可能是由于循环进口),python,django,django-models,Python,Django,Django Models,我有两个应用程序名为collection,accounts。这两个应用都定义了模型。我正在将模型报告程序文件从帐户应用程序导入集合。类似地,从应用程序集合到帐户的模型报告 accountsapp中的Report模型在accountsapp的模型类方法中被调用,如下所示: from collection.models import Report class ReporterProfile(models.Model): .... def published_articles_nu
collection
,accounts
。这两个应用都定义了模型。我正在将模型报告程序文件
从帐户
应用程序导入集合
。类似地,从应用程序集合
到帐户
的模型报告
accounts
app中的Report
模型在accounts
app的模型类方法中被调用,如下所示:
from collection.models import Report
class ReporterProfile(models.Model):
....
def published_articles_number(self):
num = Report.objects.filter(reporterprofile=self.id).count()
return num
from accounts.models import ReporterProfile, User
from <project_name> import settings
class Report(models.Model):
reporterprofile = models.ForeignKey(ReporterProfile, on_delete=models.CASCADE, verbose_name="Report Author")
...
class Comment(models.Model):
report = models.ForeignKey(Report, on_delete=models.CASCADE, related_name='comments')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="Comment by")
...
类似地,我正在将ReporterProfile
和User
模型从accounts
app导入collection
app模型,如下所示:
from collection.models import Report
class ReporterProfile(models.Model):
....
def published_articles_number(self):
num = Report.objects.filter(reporterprofile=self.id).count()
return num
from accounts.models import ReporterProfile, User
from <project_name> import settings
class Report(models.Model):
reporterprofile = models.ForeignKey(ReporterProfile, on_delete=models.CASCADE, verbose_name="Report Author")
...
class Comment(models.Model):
report = models.ForeignKey(Report, on_delete=models.CASCADE, related_name='comments')
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="Comment by")
...
从accounts.models导入报告程序,用户
从导入设置
课堂报告(models.Model):
reporterprofile=models.ForeignKey(reporterprofile,on_delete=models.CASCADE,verbose_name=“报告作者”)
...
类注释(models.Model):
report=models.ForeignKey(report,on_delete=models.CASCADE,related_name='comments')
user=models.ForeignKey(settings.AUTH\u user\u MODEL,on\u delete=models.CASCADE,verbose\u name=“Comment by”)
...
运行服务器或makemigrations时,我发现错误:
文件“F:\project\u name\accounts\models.py”,第8行,在
从collection.models导入报告
文件“F:\project\u name\collection\models.py”,第2行,在
从accounts.models导入报告程序,用户
ImportError:无法从部分初始化的模块“accounts.models”导入名称“ReporterProfile”(很可能是由于循环导入)(F:\project\u name\accounts\models.py)
我认为错误是因为错误的导入模式。我该怎么办?对于
外键:
您可以使用reporterprofile=models.ForeignKey(reporterprofile,…)
,而不是使用reporterprofile=models.ForeignKey(“accounts.reporterprofile”,…)
,因此您不必导入模型
用于防止循环或导入错误:
而不是使用:
from accounts.models import ReporterProfile
[...]
foo = ReporterProfile()
您可以使用:
import accounts.models
[...]
foo = accounts.models.ReporterProfile()
请确保您正在编写CreateModels nane,因为我遇到了相同的问题,并且在查看导入时,我编写了userFormdata而不是userFormdata(我将“f”大写)
因此,在我的例子中,从accounts.models import ReporterProfile,User中删除行
,并将字段更新为:ReporterProfile=models.ForeignKey(“accounts.ReporterProfile”,on_delete=models.CASCADE,verbose_name=“Report Author”)
解决了问题。谢谢。等等,所以如果我要导入4或5个类,我应该在每次调用中使用“accounts.MyClass”???