Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 努力避免循环进口_Django_Django Models - Fatal编程技术网

Django 努力避免循环进口

Django 努力避免循环进口,django,django-models,Django,Django Models,最近我把一个应用分成了两个独立的应用,因为我有15个以上的模型。我得到了“循环导入错误”。为了解决这个问题,我试着写下: from django.db import models class App1Model(models.Model): app2model = models.ForeignKey(app2.App2Model) 我得到的错误是:“NameError:name'app2'未定义”。但app2已正确添加到已安装的应用程序和路径中 project -app1

最近我把一个应用分成了两个独立的应用,因为我有15个以上的模型。我得到了“循环导入错误”。为了解决这个问题,我试着写下:

from django.db import models

class App1Model(models.Model):
    app2model = models.ForeignKey(app2.App2Model)
我得到的错误是:“NameError:name'app2'未定义”。但app2已正确添加到已安装的应用程序和路径中

project
    -app1
        --models.py
    -app2
        --models-py

ForeignKey
可以将字符串作为参数,即
models.ForeignKey('app2.App2Model')
。当然,您应该首先尝试设计代码以避免任何循环依赖关系。

您仍然需要一个导入语句

import app2.App2Model

但是,如果app2导入app1,您将得到一个如您所述的错误。

我同意Cat Plus关于设计代码以避免循环依赖的观点,但您不能:

try:
    import app.model
except ImportError:
    pass

但是如果您的代码中需要模型,会发生什么呢。我有足够多的函数需要一个模型或另一个模型的函数?@HansdeJong不会建立循环关系。如果确实需要,请使用
get_model
或函数级导入。