Установка общих полей в 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"]

Но мне интересно, есть ли какой-нибудь общий способ

?
Вернуться на верх