Миграция Django с 2.0 на 2.2 (просмотр разрешений) - PullRequest
3 голосов
/ 30 мая 2019

При переносе проблемы с Django, связанной с миграцией:

python manage.py перенести демо --database demo

Ошибка получения, связанная с:

ValueError: Невозможно назначить «ContentType: ContentType object (1)»: текущий маршрутизатор базы данных предотвращает это отношение.

Detailed Error Log : https://ideone.com/z6NPkq

Протестированная версия Django : После версии Django 2.0.13 столкнулась с этой проблемой.

Дайте мне знать, что может быть причиной этого?

РЕДАКТИРОВАТЬ : нашли причину в Django 2.1, они добавили представление Разрешение: Источник

Почему разрешения на просмотр не генерируются автоматически?

Решение : Если в модуле Django мы перейдем к пути к файлу: django / contrib / auth / management / __ init.py

Мы должны изменить номер строки: 79

Permission(codename=codename, name=name, content_type=ct)

до

Permission(codename=codename, name=name, content_type_id=ct.id)

Я нашел это решение после отладки внутри Django, но все еще не могу понять, почему это происходит. Дайте мне знать другое решение и любую причину этого решения.

EDIT-1 : Ищу ответ, чтобы мне не пришлось менять основной модуль Django (Библиотека).

Solution-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 .

1 Ответ

4 голосов
/ 14 июня 2019

Похоже на проблему с роутером.Это должно быть потому, что вы используете Django с несколькими конфигурациями базы данных.Необходимо перезаписать функцию allow_relation в маршрутизаторе приложения, чтобы разрешить связь между базами данных, в которых присутствует тип контента, и демонстрационной базой данных в соответствии с примером выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...