Django-具有多个文件的循环导入

问题描述 投票:0回答:1

我在一个包中有3个python文件,我正在尝试将一个类从一个文件导入其他2个文件。但是我得到了错误。

models
   __init__.py
   a.py
   b.py
   c.py

a.py

class ATestOne()
    pass

class ATestTwo()
    pass

class ATestThree()
    pass

b.py

from app.models.a import ATestOne, ATestTwo
from app.models.c import CTestOne

class BTestOne()
    field1 = models.ForeignKey(ATestOne)

class BTestTwo()
    field1 = models.ForeignKey(CTestOne)

c.py

from app.models.a import ATestOne, ATestThree
from app.models.b import BTestOne
class CTestOne()
    field1 = models.ForeignKey(ATestOne)

 class CTestTwo()
        field1 = models.ForeignKey(BTestOne)

返回下面提到的错误ImportError:无法导入名称'ATestOne'

请提供解决此问题的建议。预先感谢。

python django model circular-dependency
1个回答
0
投票

例如,您可以通过使用字符串引用这些模型来避免循环导入问题

class BTestOne()
    field1 = models.ForeignKey('app.ATestOne')

class BTestTwo()
    field1 = models.ForeignKey('app.CTestOne')

((如果我猜对了,app是模型所在的应用程序的名称)

© www.soinside.com 2019 - 2024. All rights reserved.