Импорт методов модели в другую модель

Я использую 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()

Можно сделать и наоборот.

Вернуться на верх