Доброго времени суток!
Есть такой сериализатор:
class AddRecipeSerializer(serializers.ModelSerializer):
image = Base64ImageField()
author = CustomUserSerializer(read_only=True)
ingredients = AddIngredientRecipeSerializer(many=True)
tags = serializers.PrimaryKeyRelatedField(queryset=Tag.objects.all(),
many=True)
cooking_time = serializers.IntegerField()
class Meta:
model = Recipe
fields = ('id', 'tags', 'author', 'ingredients', 'name',
'image', 'text', 'cooking_time')
def update(self, recipe, validated_data):
recipe.name = validated_data.get('name', recipe.name)
recipe.text = validated_data.get('text', recipe.text)
recipe.cooking_time = validated_data.get('cooking_time', recipe.cooking_time)
recipe.image = validated_data.get('image', recipe.image)
if 'ingredients' in validated_data:
ingredients = validated_data.pop('ingredients')
recipe.ingredients.clear()
self.add_recipe_ingredients(ingredients, recipe)
if 'tags' in validated_data:
tags_data = validated_data.pop('tags')
recipe.tags.set(tags_data)
recipe.save()
return recipe
Не могу понять как с помощью super().update() избавиться от:
recipe.name = validated_data.get('name', recipe.name)
recipe.text = validated_data.get('text', recipe.text)
recipe.cooking_time = validated_data.get('cooking_time', recipe.cooking_time)
recipe.image = validated_data.get('image', recipe.image)
Направьте в нужную сторону. Спасибо!