小编G. *_*. P的帖子

多对多的嵌套序列化器

我是 Python 和 Django 新手。我正在使用 Django-Rest-Framework 创建 api,我想序列化可以接受以下格式的 json 的数据:

{
"ingredients": ["Sugar","Egg"],
"name": "Cake",
"description": "Dinner Food",
"directions": "direction1"
}
Run Code Online (Sandbox Code Playgroud)

但是我可以使用以下格式将数据保存在数据库中:

{
"ingredients": [{"name":"Cake"},{"name":"Egg"}],
"name": "Rice",
"description": "Dinner Food",
"directions": "direction1"
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何将字典转换为设置字段。我知道列表字段列表序列化器,但不知道如何使用它们。是否可以使用模型序列化器来做到这一点?

序列化器.py

class IngredientSerializer(serializers.ModelSerializer):

    class Meta:
        model = Ingredient
        fields = '__all__'


class RecipeSerializer(serializers.ModelSerializer):
    ingredients = IngredientSerializer(many=True)

        class Meta:
            model = Recipe
            fields = '__all__'

    def create(self, validated_data):
        ingredients_data = validated_data.pop('ingredients')
        print(ingredients_data)
        recipe = Recipe.objects.create(**validated_data)
        for ingredient in ingredients_data:
            ingredient, created = Ingredient.objects.get_or_create(name=ingredient['name']) …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-rest-framework

6
推荐指数
1
解决办法
4806
查看次数