Импорт методов модели в другую модель
Я использую Django Rest Framework для API, где мне нужно использовать методы из одной модели в другой. Но, это приводит к
ImportError: cannot import name '...' from partially initialized module '...' (скорее всего, из-за циклического импорта)
Мои образцы моделей следующие:
Модель 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()
Насколько я понимаю, ошибка возникает из-за ciruclar import. Есть ли способ импортировать методы в модели друг друга?
Вы можете использовать функцию 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()
Можно сделать и наоборот.