djoser не сохраняет пароль пользователя
Использую djoser с django rest framework. При попытке зарегистрировать пользователя djoser не выдает никаких ошибок:
Но при попытке получить токен выдает ошибку:

И справедливо, т.к. никакого пароля в базе нет:
Почему djoser не хочет сохранять пароль я понять не могу.
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'channels',
'rest_framework',
'rest_framework.authtoken',
'djoser',
'Users',
'Farms'
]
#Конфигурация REST
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
}
urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework.authtoken import views
urlpatterns = [
path('admin/', admin.site.urls),
path('auth/', include('djoser.urls')),
path('auth/', include('djoser.urls.authtoken')),
path('auth/', include('djoser.urls.jwt')),
]
При чем получение токена работает нормально если этому же пользователю задать пароль через админку. Помогите, в чем может быть проблема?
Ответы (1 шт):
Автор решения: Machalka
→ Ссылка
Необходимо было в менеджере пользователей добавить user.set_password(password)
class Manager(UserManager):
def create_user(self, email, password=None):
if not email:
raise ValueError('Пользователь должен иметь email')
user=self.model(email=email,)
user.set_password(password) #вот тут
user.save(using=self._db)
return user
def create_superuser(self, email, password=None):
user=self.model(email=email,)
# user.username=""
user.is_staff=True
user.is_superuser=True
user.set_password(password)
user.save(using=self._db)
return user
