Django Rest Framework可写嵌套序列化器
Django Rest Framework可写嵌套序列化器
我正在为一门课程编写一个示例项目,这个项目是一个食谱组织器。除了使用一些非常基本的功能之外,我对DRF并不是很有经验。以下是目标:
创建一个新的食谱,并关联相关的食材。在创建食谱对象的同时创建食材对象。
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="这是您的食谱的简要描述") directions = models.TextField(help_text="如何制作食谱") ingredients = models.ManyToManyField(Ingredient) def __str__(self): return self.name
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
这段代码成功地在数据库中创建了食谱对象和食材对象,但没有将食材列表与食谱关联起来。我猜这是因为当我运行ingredients_data = validated_data.pop('ingredients')
时,validated_data
字典中的食材被移除了,所以当我使用validated_data
创建一个新的食谱时,没有关联的食材。
然而,我似乎找不到一种方法来保持食材与食谱的关联。