Serializers

Serializers handle: - Input data validation and conversion (deserialization) - Output data formatting (serialization)

Define a Serializer

Inherit ModelSerializer and declare fields:

from flask_mongo_drf import ModelSerializer, CharField, IntegerField

class UserSerializer(ModelSerializer):
    name = CharField(required=True, max_length=50)
    age = IntegerField(min_value=0, max_value=150)

    class Meta:
        model = UserModel   # optional

Built-in Field Types

  • CharField — string, supports max_length, min_length

  • IntegerField — integer, supports min_value, max_value

  • FloatField — float

  • BooleanField — boolean

  • DateTimeField — datetime, custom format

  • ObjectIdField — MongoDB ObjectId

  • ListField — list, can nest child fields

  • DictField — dictionary

Field Options

  • required — whether required

  • default — default value

  • allow_null — allow null

  • read_only — output only, not for input

  • write_only — input only, not for output

  • validators — list of custom validation functions

Using Serializers

Automatically used in ViewSet, or manually:

serializer = UserSerializer(data=request.json)
if serializer.is_valid():
    validated_data = serializer.validated_data
else:
    errors = serializer.errors