@GoldGoblin

DRF как не сохранять стандартные поля в ручную?

Доброго времени суток!
Есть такой сериализатор:
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)

Направьте в нужную сторону. Спасибо!
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
@bacon
Сначала достать через pop всё что мешает вызвать родительский update, потом вызвать этот update, потом дописать всё что из pop'ов. Либо посмотреть как это сделано в родительском update
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы