我的应用无法将 AUTH_USER_MODEL 识别为默认用户模型
My app is not recognising AUTH_USER_MODEL as the default User model
我创建了一个自定义用户模型。我的模型如下:
class User(AbstractUser):
...
Name = models.CharField(max_length=128)
...
当我尝试通过我的应用向该模型发出 post 请求时,在 views.py 文件中我有如下代码:
def post(self,request):
name = request.POST['name']
email = request.POST['email']
password = request.POST['password']
age = request.POST['age']
number = request.POST['number']
gender = request.POST['gender']
organisation = request.POST['organisation']
designation = request.POST['designation']
u = User(
Name = name,
...
我收到如下错误:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/Users/adhishwars/Desktop/simulations/beergame/views/instructor.py", line 37, in post
u = User(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/db/models/base.py", line 500, in __init__
raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__, kwarg))
TypeError: User() got an unexpected keyword argument 'Name'
在应用任何迁移之前,我确保在项目开始时将 AUTH_USER_MODEL = 'app.User'
包含在 settings.py 文件中。但是我仍然收到此错误。
然后,我删除了我的 migrations 文件夹,删除了我的 db.sqlite3 文件,然后 运行 python3 manage.py makemigrations app,python3 manage.py migrate .我仍然遇到同样的错误。我的应用没有将我的自定义用户模型识别为默认用户模型。
有什么建议吗?
试试这个技巧:
使用 Django 版本 3.1,在 auth/forms 中,注释掉第 10 行并将第 104 和 153 行中的模型更改为您定义的模型。
找到错误的家伙。在我的 views.py 文件中,我导入了默认的 Django 用户模型。
from django.contrib.auth.models import User
这导致 Django 使用它自己的默认用户模型,尽管我使用了我的自定义用户模型。一旦我删除了那条线,它就起作用了。
编辑:对于某些人来说,它可能仍然不起作用。我建议在他们的视图文件中使用以下代码:
from django.contrib.auth import get_user_model
User = get_user_model()
我创建了一个自定义用户模型。我的模型如下:
class User(AbstractUser):
...
Name = models.CharField(max_length=128)
...
当我尝试通过我的应用向该模型发出 post 请求时,在 views.py 文件中我有如下代码:
def post(self,request):
name = request.POST['name']
email = request.POST['email']
password = request.POST['password']
age = request.POST['age']
number = request.POST['number']
gender = request.POST['gender']
organisation = request.POST['organisation']
designation = request.POST['designation']
u = User(
Name = name,
...
我收到如下错误:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/Users/adhishwars/Desktop/simulations/beergame/views/instructor.py", line 37, in post
u = User(
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/db/models/base.py", line 500, in __init__
raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__, kwarg))
TypeError: User() got an unexpected keyword argument 'Name'
在应用任何迁移之前,我确保在项目开始时将 AUTH_USER_MODEL = 'app.User'
包含在 settings.py 文件中。但是我仍然收到此错误。
然后,我删除了我的 migrations 文件夹,删除了我的 db.sqlite3 文件,然后 运行 python3 manage.py makemigrations app,python3 manage.py migrate .我仍然遇到同样的错误。我的应用没有将我的自定义用户模型识别为默认用户模型。
有什么建议吗?
试试这个技巧: 使用 Django 版本 3.1,在 auth/forms 中,注释掉第 10 行并将第 104 和 153 行中的模型更改为您定义的模型。
找到错误的家伙。在我的 views.py 文件中,我导入了默认的 Django 用户模型。
from django.contrib.auth.models import User
这导致 Django 使用它自己的默认用户模型,尽管我使用了我的自定义用户模型。一旦我删除了那条线,它就起作用了。
编辑:对于某些人来说,它可能仍然不起作用。我建议在他们的视图文件中使用以下代码:
from django.contrib.auth import get_user_model
User = get_user_model()