在其他模型中导入模型方法
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()
反之亦然。
我正在为 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()
反之亦然。