Я совсем недавно использую 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'
Любая помощь?