我对使用Django和Python还是很陌生,我正在研究一个尚未启动的项目。
默认数据库是MongoDB,我在其中拥有用户,可以在应用程序的登录页面中进行身份验证。
现在,我们安装了一个票务系统“帮助台”应用程序,我们想使用在项目中禁用的Admin。 我在“设置和网址”中添加了“管理”应用程序,但没有任何用户的访问权限。
我试图用python manage.py createsuperuser创建一个超级用户,但这给了我这个错误:
/ p /中的TypeError 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的地方,似乎管理员正在尝试从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,**hints):
if model._meta.app_label == 'helpdesk'or model._meta.app_label == 'sites' or model._meta.app_label == 'admin':
return 'helpdesk'
return 'default'
有帮助吗?