Обновление модели 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
Вернуться на верх