关于python:从视图导入Django中的模型

Importing from views to models in Django

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

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

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

1
from anotherapp.views import MyClass

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

1
ImportError: cannot import name Account


这是您遇到的循环导入错误。虽然在Django中从视图导入到模型是一种糟糕的实践,但是如果您仍然想这样做,您可以按照这个问题中的方法来解决它。

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

  • 您可以考虑在anotherapp中导入其他低级模块,而不是在MyClass中导入(不取决于views.py)
  • 您可以使用django的信号在项目范围内捕获anotherapp的事件,并根据这些事件进行操作。
  • 你可以创建第三个文件,比如anotherapp中的utils.py,把MyClass移到那里,让anotherapp/views.py和你的应用程序的models.pyanotherapp.utils导入。