Serializers¶
This module provides enhanced serializer utilities for Django REST Framework.
It extends ModelSerializer with:
- deterministic field ordering
- role based field permissions
- update protection for sensitive fields
OrderedFieldsMixin¶
Ensures predictable field ordering in API responses.
Behavior¶
If FIELD_ORDER is defined:
- Fields listed in
FIELD_ORDERappear first - Remaining fields follow original serializer order
RoleBasedReadOnlyFieldsMixin¶
Controls field editability based on user role.
NoUpdateFieldsMixin¶
Prevents specific fields from being updated after creation.
Behavior¶
| Action | Behavior |
|---|---|
| create | fields are writable |
| update | fields become read-only |
| partial_update | fields become read-only |
Validation rule¶
no_update_fields must be:
- list
- or tuple
Otherwise a TypeError is raised.
How it works¶
- Reads
request.user.user_type - Matches against role configuration
- Marks matching fields as
read_only
ModelSerializer (Core Base)¶
The main serializer base class used in drf-corekit.
Features¶
- Ordered field output
- Role based read only fields
- Immutable fields after creation
Combined Usage Example¶
from drf_corekit.serializers import ModelSerializer
class UserSerializer(ModelSerializer):
class Meta:
model = User
fields = "__all__"
no_update_fields = ["email"]
Confirmation Serializers¶
Provides serializers for operations that require explicit user confirmation before execution.
Typical use cases include:
- account suspension
- account reactivation
- account deactivation
- account deletion
- password reset triggers
ConfirmSerializer¶
Requires explicit confirmation before an action can proceed.
Behavior¶
The request is considered valid only when:
Validation rule¶
If confirm is:
- omitted
false
a validation error is raised.
Example¶
ConfirmReasonSerializer¶
Extends ConfirmSerializer by requiring a reason for the action.
Behavior¶
The request is considered valid only when:
confirmistruereasonis providedreasonis not blank