在其他模型中导入模型方法

Import model methods in other model

我正在为 API 使用 Django Rest Framework,我需要将一个模型的方法用于另一个模型。但是,这导致

ImportError: cannot import name '...' from partially initialized module '...' (most likely due to circular import)

我的模型样本如下:

型号A

from ..B.models import B
Class A:
    @classmethod
    def foo():
        b = B()
        b.bar()

模型 B

from ..A.models import A
Class B:
    @classmethod
    def bar():
        a = A()
        a.foo()

我知道错误是由 循环导入 引起的。 有没有办法在对方的模型中导入方法?

您可以使用专为惰性模型导入设计的 get_model 功能。

from django.apps import apps
YourModel = apps.get_model('your_app_name', 'YourModel')

您可以使用 get_model 并在调用函数时导入另一个模型:

from django.apps import apps

Class B:
    @classmethod
    def bar():
        A = apps.get_model('app_name', 'A')
        a = A()
        a.foo()

反之亦然。