从视图导入到Django中的模型

时间:2017-04-03 22:28:03

标签: python django python-import circular-dependency

我的某个应用程序models.py中有类似的内容:

class Account(AbstractBaseUser):
    email = models.EmailField(unique=True)

我想从其他应用的views.py导入一个类,如下所示:

from anotherapp.views import MyClass

问题出在anotherapp.views文件的第一行,我导入了Account类。因此,当我想将MyClass导入我的models.py文件时,会出现此错误:

ImportError: cannot import name Account

1 个答案:

答案 0 :(得分:1)

这是您遇到的循环导入错误。虽然您可以bad practice从视图导入Django中的模型,但如果您仍想这样做,则可以按照此question中的方法来解决它。

以下几种可以被视为良好做法的替代方法:

  • 您可以考虑导入anotherapp而不是MyClass中存在的其他低级模块(不依赖于views.py
  • 您可以使用Django的signals来捕捉项目范围内的anotherapp个事件并根据此行事。
  • 您可以创建第三个文件,在utils.py中说出anotherapp,在MyClass移动anotherapp/views.py并让models.py和您的应用anotherapp.utils导入来自tf.train.Supervisor