Reputation: 716
whenever I try to access the view for my registration serializer I keep getting that I'm missing the Meta attribute even though it's there. I tried making some changes to the code but it doesn't seem to work so it's clearly something I'm missing.
Why is this happening?
This is the serializer:
class UserRegistrationSerializer(serializers.ModelSerializer):
username = serializers.CharField(
required=True,
validators=[UniqueValidator(queryset=User.objects.all())]
)
email = serializers.ModelSerializer(
required=True,
validators=[UniqueValidator(queryset=User.objects.all())]
)
password = serializers.CharField(
required=True,
label="Password",
style={'input_type': 'password'}
)
password_2 = serializers.CharField(
required=True,
label="Confirm Password",
style={'input_type': 'password'}
)
class Meta(object):
model = User
fields = ['username', 'email', 'password', 'password_2',]
def validate_password(self, value):
if len(value) < 8:
raise serializers.ValidationError(
"Password should be at least 8 characters long.")
return value
def validate_password_2(self, value):
data = self.get_initial()
password = data.get('password')
if password != value:
raise serializers.ValidationError("Passwords doesn't match.")
return value
def validate_username(self, value):
if User.objects.filter(username=value).exists():
raise serializers.ValidationError("Username already exists.")
return value
def create(self, validated_data):
user_data = {
'username': validated_data.get('username'),
'email' : validated_data.get('email'),
'password': validated_data.get('password'),
}
user = User.objects.create_user(
data=user_data,
site=get_current_site(self.context['request'])
)
return validated_data
Upvotes: 0
Views: 454
Reputation: 2165
i think its the Meta(object) line in class meta, it should be:
class Meta:
model = User
fields = ['username', 'email', 'password', 'password_2',]
Upvotes: 1