Обновление модели Django без использования сериализатора
Как лучше обновить модель без использования встроенного сериализатора из Django Rest Framework?
У меня есть представление, которое обновляет модель RecipeIngredient
. Мой сериализатор определен внутри моего представления, и я не хочу, чтобы он отвечал за обращение к базе данных, только за сериализацию/десериализацию данных.
У меня есть services.py
, который обрабатывает все вызовы базы данных. Я отправляю ему данные, он обновляет модель и сохраняет ее. Мне кажется, что это не очень хороший подход. Есть ли лучший способ решить эту задачу?
View
class RecipeIngredientUpdateApi(APIView):
class InputSerializer(serializers.Serializer):
magnitude = serializers.FloatField(required=False)
unit = serializers.CharField(max_length=255, required=False)
def post(self, request, id):
serializer = self.InputSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
recipe_ingredient_update(id=id, **serializer.validated_data)
return Response(serializer.data, status=status.HTTP_200_OK)
Service.py
Этот сервис я и пытаюсь очистить.
def recipe_ingredient_update(*, id, magnitude, unit):
"""Updates an existing RecipeIngredient"""
recipe_ingredient = RecipeIngredient.objects.get(id=id)
recipe_ingredient.magnitude = magnitude
recipe_ingredient.unit = unit
recipe_ingredient.full_clean()
recipe_ingredient.save()
return recipe_ingredient