Django error : 'текущий маршрутизатор базы данных не допускает этого отношения'.

У меня есть 2 модели (клиент, заказ) в двух разных базах данных sqlite3 (custdb и orddb), помимо базы данных по умолчанию.

Settings.py:

      DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.sqlite3',
           'NAME': BASE_DIR / 'db.sqlite3',
        },
       'custdb': {
        'ENGINE': 'django.db.backends.sqlite3',
           'NAME': BASE_DIR / 'custdb.sqlite3',
        },
      'orddb': {
           'ENGINE': 'django.db.backends.sqlite3',
           'NAME': BASE_DIR / 'orddb.sqlite3',
        }
      }
       DATABASE_ROUTERS = ['customer.router.custrouter', 'order.router.ordrouter']

В App 'customer', в models.py, ниже определен класс модели customer (здесь показано только определение класса)

    class customer(models.Model):
        name = models.CharField(max_length=50)
        phone = models.IntegerField()

Под заказ App, в models.py, ниже определена модель заказа (здесь показано только определение класса)

    class order(models.Model):
        ordername = models.CharField(max_length=50)
        customer = models.ForeignKey(cust, default=None, null=True, on_delete  = models.SET_NULL)

В App 'customer', в router.py, я определил один класс маршрутизатора

class custrouter:
    route_app_labels = {'customer'}

    def db_for_read(self, model, **hints):
        if model._meta.app_label in self.route_app_labels:
            return 'custdb'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label in self.route_app_labels:
            return 'custdb'
        return None

    def allow_relations(self, obj1, obj2, **hints):
        if (
            obj1.meta.app_label in self.route_app_labels or
            obj2.meta.app_label in self.route_app_labels
        ):
            return True
        return True

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label in self.route_app_labels:
            return db == 'custdb'
        return None 

В App 'order', в router.py, я определил другой класс маршрутизатора

class ordrouter:
    route_app_labels = {'order', 'customer'}

    def db_for_read(self, model, **hints):
        if model._meta.app_label in self.route_app_labels:
            return 'orddb'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'order':
            return 'orddb'
        return None

    def allow_relations(self, obj1, obj2, **hints):
        db_list = ('custdb', 'orddb')
        if obj1._state.db in db_list and obj2._state.db in db_list:
            return True
        return None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label == 'order':
            return db == 'orddb'
        return None         

Я могу вставить запись в таблицу customer, но при попытке вставить запись в таблицу order через интерфейс администратора, я получаю следующую ошибку: Cannot assign "<customer: John>": текущий маршрутизатор базы данных не позволяет использовать это отношение.
Может ли кто-нибудь из экспертов подсказать, как я могу добиться перекрестных отношений между базами данных?

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