在 Django 中从视图导入到模型



我的一个应用程序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

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

以下是一些可被视为良好做法的替代方法:

  • 您可以考虑导入anotherapp中存在的其他低级模块,而不是MyClass(不依赖于views.py(
  • 你可以使用 Django 的信号来捕捉anotherapp的事件项目范围并根据它采取行动。
  • 您可以创建第三个文件,例如utils.py anotherappMyClass移动到那里,然后让anotherapp/views.py和应用的models.pyanotherapp.utils导入

最新更新