Проблема с Django при доступе к админу - PullRequest
0 голосов
/ 05 ноября 2019

Я совсем недавно использую Django и Python, и я работаю над проектом, который еще запущен.

База данных по умолчанию - MongoDB, где у меня есть пользователи, и я могу пройти аутентификацию на странице входа в приложение. .

Теперь мы установили приложение 'helpdesk', которое представляет собой систему тикетов, и мы хотели бы использовать Admin, который отключен в нашем проекте. Я добавил приложение Admin в Настройки и URL, но у меня нет доступа ни к какому пользователю.

Я пытался создать суперпользователя с помощью python manage.py createuperuser, но он выдает мне эту ошибку:

TypeError в аргументе / admin / int () должен быть строкой, байтовоподобным объектом или числом, а не 'ObjectId'

В django / contrib / auth мы сделали несколькоизменения, например:

def _get_user_session_key(request):
# This value in the session is always serialized to a string, so we need
# to convert it back to Python whenever we access it.
if SESSION_KEY in request.session:
    return ObjectId(request.session[SESSION_KEY])

Где появляется этот ObjectId, кажется, что Admin пытается получить доступ к пользователю из MongoDB, а не из БД службы поддержки, которая является SQLite.

Возможно, моя проблема в том, чтоЯ не понимаю о смешивании баз данных и доступа. Я создал маршрутизатор с такими функциями, как:

class RouterDB:
def db_for_read(self, model, **hints):
    print(model._meta.app_label)
    if model._meta.app_label == 'helpdesk' or model._meta.app_label == 'sites' or model._meta.app_label == 'admin':
        return 'helpdesk'
    return 'default'

def db_for_write(self, model, **hints):
    if model._meta.app_label == 'helpdesk'or model._meta.app_label == 'sites' or model._meta.app_label == 'admin':
        return 'helpdesk'
    return 'default'

Любая помощь?

...