我的应用无法将 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()