Как повторно использовать сериализатор в 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)