Установка общих полей в ModelSerializer
Здравствуйте, я довольно новичок в этом деле, поэтому вопрос может быть глупым. Предположим, у меня есть много моделей сериализатора, но для примера возьмем 4
ниже приведен код
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']
У меня есть другие поля в этих сериализаторах моделей, но эти пять полей являются общими для всех сериализаторов, поэтому могу ли я создать BaseModelSerializer, чтобы я мог наследовать его в этих сериализаторах и получить эти поля по умолчанию, и мне не придется писать его снова и снова. если кто может помочь, заранее спасибо
Мое предложение состоит в том, чтобы создать базовый сериализатор, а другие сериализаторы унаследовать его. Вот пример:
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
Да, я тоже об этом подумал, что-то вроде
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"]
Но мне интересно, есть ли какой-нибудь общий способ
?