Untitled

 avatar
unknown
plain_text
a year ago
1.4 kB
4
Indexable
    @atomic
    def update(self, instance, validated_data):
        """Изменение рецепта автором."""
        data = validated_data.copy()
        # Проверяем, был ли указан ингредиент.
        if 'ingredient' in data:
            try:
                RecipeIngredient.objects.get(recipe=instance,
                                             ingredient=data['ingredient'])
            # Если ингредиента не существует, возвращаем статус 400.
            except RecipeIngredient.DoesNotExist:
                return Response(
                    {'detail': 'Указанный ингредиент не существует'},
                    status=status.HTTP_400_BAD_REQUEST
                )

        instance.name = validated_data.get('name', instance.name)
        instance.image = validated_data.get('image', instance.image)
        instance.text = validated_data.get('text', instance.text)
        instance.cooking_time = validated_data.get(
            'cooking_time', instance.cooking_time
        )
        tags_data = validated_data.get('tags')
        instance.tags.set(tags_data)
        ingredients_data = validated_data.get('ingredients')
        self.add_ingredients(ingredients_data, instance)
        instance.save()
        return instance
Editor is loading...