【发布时间】:2018-01-18 00:45:43
【问题描述】:
我正在关注tutorial 的基本概念。如何在 django 中自定义用户。 我不想使用内置的身份验证用户。我发现这个教程似乎一直有效。
我完成了整个教程,一切正常。但是当我运行我的项目时,登录并在管理区域中打开用户我点击“保存并继续编辑”这给了我错误
我的项目中的代码与教程中的完全相同。我已经尝试删除我的缓存和迁移并重新开始,甚至创建一个新环境并重新安装 django。似乎没有任何效果。
Environment:
Request Method: POST
Request URL: http://localhost:8000/admin/accounts/user/1/change/
Django Version: 2.0.1
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/db/backends/base/base.py" in _commit
239. return self.connection.commit()
The above exception (FOREIGN KEY constraint failed) was the direct cause of the following exception:
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
35. response = get_response(request)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
128. response = self.process_exception_by_middleware(e, request)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
126. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/contrib/admin/options.py" in wrapper
574. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view
142. response = view_func(request, *args, **kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
44. response = view_func(request, *args, **kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/contrib/admin/sites.py" in inner
223. return view(request, *args, **kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/contrib/admin/options.py" in change_view
1556. return self.changeform_view(request, object_id, form_url, extra_context)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapper
62. return bound_func(*args, **kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/utils/decorators.py" in _wrapped_view
142. response = view_func(request, *args, **kwargs)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/utils/decorators.py" in bound_func
58. return func.__get__(self, type(self))(*args2, **kwargs2)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/contrib/admin/options.py" in changeform_view
1450. return self._changeform_view(request, object_id, form_url, extra_context)
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/db/transaction.py" in __exit__
212. connection.commit()
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/db/backends/base/base.py" in commit
261. self._commit()
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/db/backends/base/base.py" in _commit
239. return self.connection.commit()
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/db/utils.py" in __exit__
89. raise dj_exc_value.with_traceback(traceback) from exc_value
File "/home/tate/virtenvs/tukaha-website/lib/python3.5/site-packages/django/db/backends/base/base.py" in _commit
239. return self.connection.commit()
Exception Type: IntegrityError at /admin/accounts/user/1/change/
Exception Value: FOREIGN KEY constraint failed
我不确定这里发生了什么这与我的 django 版本有关吗?我正在使用 2.0。
我在 stackoverflow 上查看过类似的示例,例如 this 但是我在教程中没有使用外键,我什至不知道从他们的示例中导入 User 对象的位置...有什么我错过了或者教程错过了一些东西,我只是遇到了版本问题?
要重现错误,请完全按照文本教程进行操作here:然后使用您的超级用户帐户登录。编辑用户并点击保存并继续编辑。
感谢任何帮助
【问题讨论】:
-
你在
settings.py中使用过AUTH_USER_MODEL吗? -
是的,它设置为accounts.User,它与教程@jheld中的相同
-
因为您不会使用自定义用户模型,所以不应设置该变量(例如删除该行)。这可能足以解决问题——如果我没有更改默认的 django 用户模型,我从未设置过该变量。
-
@jhld 这不是我想要的,但是如果您阅读教程,我确实想要自定义用户模型...我正在尝试使用电子邮件字段而不是用户名...删除此选项from settings 使其恢复为用户名...
-
如果您这样做是因为您实际上想在实际项目中使用电子邮件而不是用户名,您可能只想使用django-username-email
标签: python django django-models django-admin