bendwidth / django-backend / user / serializers.py
serializers.py
Raw
from django.contrib.auth.models import User
from rest_framework import serializers
from .models import *

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'password', 'email']

class UserProfileSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(write_only=True)
    password = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)

    class Meta:
        model = UserProfile
        fields = ['full_name', 'email', 'password', 'password2', 'college_name', 'major', 
                  'study_level', 'country', 'courses', 'age', 'gender', 'interests', 
                  'skills', 'hobbies', 
                  'preferred_language',
                 'grad_date'
                  ]

    def create(self, validated_data):
        # Separate user data
        email = validated_data.pop('email')
        password = validated_data.pop('password')
        password2 = validated_data.pop('password2')

        # Check if both passwords match
        if password != password2:
            raise serializers.ValidationError({'password': 'Passwords must match.'})

        user = User.objects.create_user(username=email, email=email, password=password)
        user_profile = UserProfile.objects.create(user=user, **validated_data)
        return user_profile