Мое приложение не распознает AUTH_USER_MODEL как модель пользователя по умолчанию

Я создал пользовательскую модель пользователя. Моя модель выглядит следующим образом:

class User(AbstractUser):
    ...
    Name = models.CharField(max_length=128)
    ...

Когда я пытаюсь отправить запрос этой модели через свое приложение, в файле 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 в начале проекта, прежде чем применять какие-либо миграции. Тем не менее, я все еще получаю эту ошибку.

Затем я удалил папку миграции, удалил файл db.sqlite3, затем запустил приложение makemigrations python3 manage.py, python3 manage.py migrate . Я все еще получаю ту же ошибку. Мое приложение не распознает мою пользовательскую модель пользователя в качестве модели пользователя по умолчанию.

Какие-либо предложения?


person Adhishwar    schedule 10.10.2020    source источник


Ответы (2)


Попробуйте этот трюк: используя Django версии 3.1, в auth/forms закомментируйте строку 10 и измените модель в строках 104 и 153 на определенную вами модель.

person Afrikan_patriot    schedule 10.10.2020
comment
Я не использовал Djangoforms.py т.е. я добавил свой собственный код в views.py для получения данных и их обработки. Я не использовал формы Django для обработки данных форм - person Adhishwar; 10.10.2020

Ребята нашли ошибку. В моем файле views.py я импортировал пользовательскую модель Django по умолчанию.

from django.contrib.auth.models import User

Это заставило Django использовать собственную модель пользователя по умолчанию, хотя я использовал свою пользовательскую модель пользователя. Как только я удалил эту строку, все заработало.

РЕДАКТИРОВАТЬ: для некоторых людей это может все еще не работать. Я предлагаю использовать следующий код в их файле представлений:

from django.contrib.auth import get_user_model

User = get_user_model()
person Adhishwar    schedule 10.10.2020