在我的django项目中,我有以下内容:
apps1 / models.py:Post(型号)
apps2 / models.py:Blogs(型号)
apps2 / functions.py:get_blogs(方法)
apps1 / models.py文件从apps2 / models.py导入博客模型。
apps2 / models.py文件从apps2 / functions.py导入get_blogs方法。
apps2 / functions.py文件从apps1 / models.py。
我收到以下错误:
ImportError at /
cannot import name Post
Traceback
admin.autodiscover()
<in file apps1/models.py>
from apps2.models import Blogs
<in file apps2/models.py>
from apps2.functions import get_blogs
<in file apps2/functions.py>
from apps1.models import Post
我认为admin.autodiscover可能首先导入Post模型,然后通过导入循环,它试图再次导入它。虽然我尝试将其更改为:
from apps1.models import Post as OtherPost
但这没有帮助。知道为什么会这样吗?是因为现在有一个循环吗?
答案 0 :(得分:8)
如果您在Blogs
中导入apps1.models
的唯一原因是您在Post
中有关系字段,那么如何使用惰性关系呢?据我所知,这些是专门为处理你正在经历的导入循环而设计的。
这很容易,而不是
from apps2.models import Blogs
...
class Post(models.Model):
...
my_blog = models.ForeignKey(Blogs)
你使用这样的东西:
class Post(models.Model):
...
my_blog = models.ForeignKey("apps2.Blogs")