Reputation: 603
I am trying to serialize an object where I would pass data which are non-model field into the serializer
data = {
'field1': 'abc',
'field2': 123,
}
serializer = UserSerializer(
user,
context={"request": request},
data=request.data,
partial=True,
)
serializer.is_valid(raise_exception=True)
result = serializer.validated_data
where I have a UserSerializer as such
class UserSerializer(serializers.ModelSerializer):
field1 = serializers.SerializerMethodField()
field2 = serializers.SerializerMethodField()
class Meta:
model = User
fields = (
'username',
'field1',
'field2',
)
But I am getting empty DefaultDict()
from the serializer.validated_data
Upvotes: 2
Views: 1324
Reputation: 4630
you need to define that serializerMethod
. Like
class UserSerializer(serializers.ModelSerializer):
field1 = serializers.SerializerMethodField()
field2 = serializers.SerializerMethodField()
class Meta:
model = User
fields = (
'username',
'field1',
'field2',
)
def get_field1(self, obj):
value = self.context['request'].data.get('field1')
return value
def get_field2(self, obj):
value = self.context['request'].data.get('field2')
return value
Upvotes: 2