хорошо - обычно, если у вас есть две конечные точки, использующие похожий сериализатор, который должен отличаться только определенным полем / функциональностью, вы создаете базовый класс и абстрагируете его и изменяете только те части, которые необходимо изменить.Вот что я бы сделал.
class (serializers.ModelSerializer):
"""A Serizlier class for User """
class Meta:
model = models.User
fields = ('id', 'email', 'phone_number', 'user_type', 'password')
extra_kwargs = { 'password': { 'read_only': True} }
class UserSerializerForOtherView(UserSerializer):
class Meta(UserSerializer.Meta):
extra_kwargs = { 'password': { 'write_only': True} }
Теперь UserSerializerForOtherView
наследует то же поведение, что и UserSerializer
, и теперь у вас также есть новый сериализатор, если вы хотите расширить функциональность только на этом сериализаторе.
Все, что вам нужнонужно будет указать другому представлению использовать другой сериализатор.