相关疑难解决方法(0)

Django Rest Framework可写嵌套序列化器

我正在编写一个食谱组织者作为课程的示例项目.除了使用一些非常基本的功能之外,我对DRF不是很有经验.这是目标:

使用相关成分创建新配方.在创建Recipe对象的同时创建Ingredient对象.

models.py:

class Ingredient(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Recipe(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField(blank=True, null=True, help_text="This is a quick description of your recipe")
    directions = models.TextField(help_text="How to make the recipe")
    ingredients = models.ManyToManyField(Ingredient)

    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)


serializers.py

class IngredientSerializer(serializers.ModelSerializer):

    class Meta:
        model = Ingredient


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

    class Meta:
        model = Recipe

    def create(self, validated_data):
        ingredients_data = validated_data.pop('ingredients')
        recipe = Recipe.objects.create(**validated_data)
        for ingredient_data in ingredients_data:
            Ingredient.objects.create(**ingredient_data)
        return recipe
Run Code Online (Sandbox Code Playgroud)

这样可以在数据库中成功创建Recipe对象和Ingredients对象,但不会将Ingredients列表与Recipe关联.我认为这是因为当我运行时ingredients_data = …

python django serialization django-rest-framework

37
推荐指数
2
解决办法
3万
查看次数