Создайте два сериализатора и назначьте каждое из ваших представлений этому конкретному сериализатору.
например, представьте, что у вас есть два пути, такие как path1
и path2
:
class MyModelViewSet(ModelViewSet):
serializer_class = Serializer1
queryset = YourModel.objects.all()
@action(methods=['post'], detail=False, url_path='path1', serializer_class=Serializer1)
def path1_view(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
.....
@action(methods=['post'], detail=False, url_path='path2', serializer_class=Serializer2)
def path2_view(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
.....
и для сериализаторов:
class Serializer1(ModelSerializer):
class Meta:
model = SomeModel
fields = ('serial_num', 'count',)
class Serializer2(ModelSerializer):
class Meta:
model = SomeModel
fields = ('count',)
def validate(self, attrs):
# Update attrs with serial_num here
return attrs