"is not a valid choice" when trying to update a field

Viewed 13

I have this field in my User model

THEMES = [
    ("black", "black"),
    ("light", "light"),
    ("dark", "dark")
]

theme = models.CharField(
    max_length=100, choices=CHAT_STYLES,
    default=THEMES[1][1], null=True, blank=True
)

I'm trying to write a put request for it. this is the serializer.py

class UpdateThemeSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ["theme"]

        def update(self, instance, validated_data):
            new_theme = validated_data["theme"]
            User.objects.update(theme=new_theme)

and here is the view

class UpdateTheme(APIView):
    permission_classes = [IsAuthenticated]

    def put(self, request):
        serializer = UserSerializer(request.user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(data=serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors)

but when I test it in Postman i get this error

{
    "theme": [
        "\"dark\" is not a valid choice."
    ]
}
1 Answers

Update this :

THEMES = [
    ("black", "black"),
    ("light", "light"),
    ("dark", "dark")
]

theme = models.CharField(
    max_length=100, choices=THEMES,
    default=THEMES[1][1], null=True, blank=True
)
Related