Как повторно использовать сериализатор в Django (Python)

У меня есть служба в приложении Django, которое я создаю, где я хочу обрабатывать запросы get и post. Я думал, что мне следует повторно использовать сериализатор, который я уже создал, но в примерах я нахожу, что всякий раз, когда кто-то хочет использовать сериализатор, он создает новый объект.

Это реализация, в которой класс сериализатора вызывается несколько раз для создания нескольких экземпляров, по одному каждый раз, когда приходит запрос:

from django.http.response import JsonResponse
from django.http.request import RAISE_ERROR, HttpRequest
from rest_framework.parsers import JSONParser
from rest_framework import status
from models import Instrument
from serializers import InstrumentsSerializer

class InstrumentsService():

    def __init__(self):
        self.serializer: InstrumentsSerializer = None

    def get_instruments_by_type(self, instrument_type: str):
        if instrument_type is not None:
            instruments = Instrument.objects.all()
            instruments.filter(instrument_type__icontains=instrument_type)
            instruments_serializer = InstrumentsSerializer(instruments, many=True)
        else:
            raise ValueError("Value type None is not acceptable for 'instrument_type'")

        return instruments_serializer.data

    def add_instrument(self, instrument_data: Instrument):
        instrument_serializer = InstrumentsSerializer(data=instrument_data)

        if instrument_serializer.is_valid():
            instrument_serializer.save()

Как я могу использовать один и тот же сериализатор и каждый раз передавать ему разные данные? Потому что в примере, который я представил, данные передаются во время инициализации.

Почему бы не использовать Python Class Objects?

class InstrumentsService():
    serializer = InstrumentsSerializer 

    def __init__(self):
        pass

    def get_instruments_by_type(self, instrument_type: str):
        if instrument_type is not None:
            instruments = Instrument.objects.all()
            instruments.filter(instrument_type__icontains=instrument_type)
            instruments_serializer = InstrumentsService.serializer(instruments, many=True)
Вернуться на верх