在 django 1.7 和 python 2.7 中嵌套导入模型

nested import of models in django 1.7 and python 2.7

这个问题的标题可能是confussing.I不知道应该给这个问题起什么标题。

我有两个模型文件 ==> models.py 在应用程序 a 和 models.py 在应用程序 b models.py 在应用 a 中有 class A models.py 在应用 b

中有 class B

两个 类 扩展 django.db.models.Model 即这些 类 正在制作数据库表

我想从应用程序 a models.py import class A 导入应用程序 b 中的 models.py class B

我想说的是类两个都在互相利用

如果我这样编码: models.py 在应用 a==>

from b.models import B

models.py 在应用 b ==>

from a.models import A

然后我收到未定义 B 的导入错误。

如何在两个文件中同时导入 类?

您可以在不导入的情况下为模型创建外键。而不是模型 class 传递带有应用程序名称和模型名称的字符串。见 the docs for ForeignKey:

class B(models.Model):

    a = models.ForeignKey('a.A')

如果您想在代码中的某处访问此类模型,请将其导入函数中:

class B(models.Model):

    def some_method(self):
        from a.models import A
        ...

这是一个循环依赖问题。你检查 Circular dependency in Python 答案。

简而言之,您应该尝试更改您的 class 组织以防止出现这种情况,或者您可以在函数内使用导入来避免导入错误。