我在www.example.com文件中添加了这一行settings.py,以便在auth_user数据库中创建一个自定义User模型:AUTH_USER_MODEL = 'main.User'
(main
是我的一个应用程序的名称,它包含了所有的型号)。
但我后来发现,我应该在初始迁移之前这样做,所以当我试图在管理页面中集成Google Authentication时,我收到了这个错误,说明我的auth_user表是空的(关于它没有任何ID为1的记录)。
所以我尝试删除迁移并将数据库恢复到迁移前的状态,但总是出现这样的错误:ValueError: The field socialaccount.SocialAccount.user was declared with a lazy reference to 'main.user', but app 'main' isn't installed.
个
我尝试通过在this article上遵循adive来修复这个问题,并清除了我的postgresql数据库沿着迁移文件和pycache。在此之后,我尝试makemigrations并收到此错误:ValueError: The field socialaccount.SocialAccount.user was declared with a lazy reference to 'auth.user', but app 'auth' isn't installed.
.然后这个错误当我试图迁移:django.db.utils.ProgrammingError: relation "main_user" does not exist
的值。
我试图寻找解决办法,但我什么也找不到。我该怎麽办?
settings.py全部)
INSTALLED_APPS = [
'landing',
'main',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
]
TEMPLATES = [
{
'DIRS': [
os.path.join(BASE_DIR, 'landing', 'frontend', 'build'),
os.path.join(BASE_DIR, 'landing', 'templates'),
os.path.join(BASE_DIR, 'main', 'frontend', 'dist'),
],
# ...
},
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
# ...
}
}
AUTH_USER_MODEL = 'main.User'
STATICFILES_DIRS = [
# ...
]
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend'
]
SITE_ID = 1
LOGIN_REDIRECT_URL = '/'
# Additional configuration settings
SOCIALACCOUNT_QUERY_EMAIL = True
ACCOUNT_LOGOUT_ON_GET= True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
}
}
}
字符串
1条答案
按热度按时间5n0oy7gb1#
我在this answer上找到了一个解决方案。
我已经撤消了所有迁移,删除了所有
/migration
文件,并清除了数据库中的所有数据。所以为了解决main_user
和main.User
的bug,我只需要运行main
应用程序来单独进行迁移:字符串
然后迁移所有更改:
型
这消除了我之前收到的所有错误,并允许我连接谷歌身份验证,没有进一步的问题。