Обновленная модель Django User с профилем теперь не может регистрировать новых пользователей
Я обновил поля модели пользователя полями профиля пользователя и теперь не могу войти в систему для новых пользователей. Я использую Djoser для обработки этих действий. Новый пользователь может зарегистрироваться, что обновляет объект пользователя, но я продолжаю получать non_field_errors: Unable to log in with provided credentials.
Я пробовал следующее в settings.py, но безрезультатно:
DJOSER = {
'LOGIN_FIELD': 'username',
'SERIALIZERS': {
'user_create': 'profiles.serializers.UserSerializer',
'user': 'profiles.serializers.UserSerializer'
}
}
AUTH_USER_MODEL = 'profiles.Profile'
Models.py:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=100, blank=True)
occupation = models.CharField(max_length=100, blank=True)
residence = models.CharField(max_length=100, blank=True, null=True)
email = models.CharField(max_length=100, blank=True, null=True)
active_id = models.IntegerField(default=0)
avatar = models.ImageField(null=True, blank=True, upload_to ='uploads/profile_pics',default='uploads/default.jpg')
def __str__(self):
return self.user.username
def save(self, *args, **kwargs):
super(Profile, self).save(*args, **kwargs)
img = Image.open(self.avatar.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.avatar.path)
Serializers.py:
class ProfileSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField(read_only=True)
avatar = serializers.ImageField(read_only=True)
class Meta:
model = Profile
fields = "__all__"
class ProfileAvatarSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ("avatar", )
class ProfileStatusSerializer(serializers.ModelSerializer):
user_profile = serializers.StringRelatedField(read_only=True)
class Meta:
model = ProfileStatus
fields = "__all__"
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer()
class Meta:
model = User
fields = ('profile', 'username', 'password')
def update(self, instance, validated_data):
if 'profile' in validated_data:
nested_serializer = self.fields['profile']
nested_instance = instance.profile
nested_data = validated_data.pop('profile')
# Runs the update on whatever serializer the nested data belongs to
nested_serializer.update(nested_instance, nested_data)
# Runs the original parent update(), since the nested fields were
# "popped" out of the data
return super(UserSerializer, self).update(instance, validated_data)
Любая помощь будет очень признательна.