Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ImportError:无法导入名称';报告人档案';从部分初始化的模块';accounts.models';(很可能是由于循环进口)_Python_Django_Django Models - Fatal编程技术网

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”???