Как передать значение true или false в сериализаторе django rest framework

вот мой код сериализатора;

class RegisterSerializer(serializers.ModelSerializer):
    password1 = serializers.CharField(required=True, write_only=True)
    password2 = serializers.CharField(required=True, write_only=True)
    email = serializers.EmailField(required=True)
    is_company = serializers.BooleanField(required=False)

    class Meta:
        model = CustomUser
        fields = [
            "email",
            "first_name",
            "last_name",
            "is_company",
            "profile_pic",
            "password1",
            "password2",
        ]

    def validate_email(self, email):
        email = get_adapter().clean_email(email)
        if allauth_settings.UNIQUE_EMAIL:
            if email and email_address_exists(email):
                raise serializers.ValidationError(
                    ("A user is already registered with this e-mail address.",)
                )
        return email

    def validate_password1(self, password):
        return get_adapter().clean_password(password)

    def validate(self, data):
        if data["password1"] != data["password2"]:
            raise serializers.ValidationError(
                ("The two password fields didn't match.",)
            )
        return data

    def get_cleaned_data(self):
        return {
            "first_name": self.validated_data.get("first_name", ""),
            "last_name": self.validated_data.get("last_name", ""),
            "is_company": self.validated_data.get("is_company", ""),
            "profile_pic": self.validated_data.get("profile_pic", ""),
            "password1": self.validated_data.get("password1", ""),
            "email": self.validated_data.get("email", ""),
        }

    def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        adapter.save_user(request, user, self)
        if self.cleaned_data.get("profile_pic"):
            user.profile_pic = self.cleaned_data.get("profile_pic")
        setup_user_email(request, user, [])
        user.save()
        return user

В основном я пытаюсь сделать следующее: когда я делаю запрос с форматом json в чем-то вроде postman;

{
    "first_name": firstname,
    "last_name": lastname,
    "email": myemail,
    "password1": password1,
    "password2": password2,
    "is_company": true
}

когда я передаю true в is_company, я хочу, чтобы это изменило значение is_company на true; но я продолжаю получать false. Я пробовал использовать данные формы, но все равно получаю false. Я также пробовал передавать 'true' или 'True', но все равно получаю false.

Обратите внимание, что я использую django-rest-auth для аутентификации, и я передаю RegisterSerializer настройки django-rest-auth в моем settings.py;

REST_AUTH_REGISTER_SERIALIZERS = {
    "REGISTER_SERIALIZER": "users.api.serializer.RegisterSerializer",
}

Способ, которым я смог решить эту проблему, заключается в преобразовании данных, поступающих от фронтенда или постмана, в чистые данные. Так что вместо чего-то вроде этого;

def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        adapter.save_user(request, user, self)
        if self.cleaned_data.get("profile_pic"):
            user.profile_pic = self.cleaned_data.get("profile_pic")
        setup_user_email(request, user, [])
        user.save()
        return user

Я сделал это;

def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        adapter.save_user(request, user, self)
        if self.cleaned_data.get("profile_pic"):
            user.profile_pic = self.cleaned_data.get("profile_pic")

        # this is new
        if self.cleaned_data.get("is_company"):
            user.is_company = self.cleaned_data.get("is_company")
        setup_user_email(request, user, [])
        user.save()
        return user
Вернуться на верх