При переносе проблемы с Django, связанной с миграцией:
python manage.py migrate demo --database demo
Получение ошибки, связанной с:
ValueError: невозможно назначить «ContentType: объект ContentType (1)»: текущий маршрутизатор базы данных предотвращает это отношение.
Detailed Error Log : https://ideone.com/z6NPkq
Проверенная версия Django: после версии Django 2.0.13 возникла эта проблема.
Подскажите, в чем может быть причина этого?
EDIT: нашли причину в Django 2.1, они добавили разрешение на просмотр: Источник
Почему разрешения на просмотр не генерируются автоматически?
Решение: в модуле Django, если мы перейдем к пути к файлу: django/contrib/auth/management/__init.py
Мы должны изменить номер строки: 79
Permission(codename=codename, name=name, content_type=ct)
to
Permission(codename=codename, name=name, content_type_id=ct.id)
Я нашел это решение после отладки внутри Django, но до сих пор не могу понять, почему это происходит. Дайте мне знать другое решение и любую причину этого решения.
EDIT-1: Ищу ответ, чтобы мне не пришлось менять основной модуль Django (библиотеку).
Решение-1:
def allow_relation(self, obj1, obj2, **hints):
if obj1._state.db == "demo" or obj2._state.db=="demo":
return True
return obj1._state.db == obj2._state.db
Примечание. В моем случае другие базы данных используют таблицы демонстрационной базы данных в качестве ссылки, поэтому для этого в классе Approuter был настроен метод allow_relation.