Set Common Fields in ModelSerializer
Hi i am fairly new at this so it might be a silly question Suppose i have many model serializer but for eg lets take 4
below is the code
class ModelSerializer1(ModelSerializer):
class Meta:
model = Model1
fields = ['id', 'created_at', 'updated_at', 'created_by', 'updated_by']
class ModelSerializer2(ModelSerializer):
class Meta:
model = Model2
fields = ['id', 'created_at', 'updated_at', 'created_by', 'updated_by']
class ModelSerializer3(ModelSerializer):
class Meta:
model = Model3
fields = ['id', 'created_at', 'updated_at', 'created_by', 'updated_by']
class ModelSerializer4(ModelSerializer):
class Meta:
model = Model4
fields = ['id', 'created_at', 'updated_at', 'created_by', 'updated_by']
I have other fields in these model serializer but these five fields are common in all the serializer so can i create a BaseModelSerializer so that i can inherit that in these serializer and ill get these fields by default and i dont have to write it again and again. if anyone can help thanks in advance
My suggestion is to create a base serializer and have the other serializers inherit it. Here is an example:
class BasicSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ['id', 'created_at', 'updated_at', 'created_by', 'updated_by']
class AdvandedSerializer(BasicSerializer):
class Meta(BasicSerializer.Meta):
fields = BasicSerializer.Meta.fields + ['additional_field', ... ] # more fields
Yes I thought of that too something like
class BaseModelSerializer(ModelSerializer):
"""
Base Model Serializer class for all other serializers.
"""
common_fields = ['id', 'created_at', 'updated_at', 'created_by', 'updated_by']
class ModelSerializer1(BaseModelSerializer):
class Meta:
model = Model1
fields = BaseModelSerializer.common_fields + ["my_other_fields"]
But i was wondering is there any generic way