嵌套序列化器创建

Nested Serializer Creation

我正在使用 Django 休息框架。我正在尝试将 create() 方法用于序列化程序。在 DishSerializer 中,当我尝试将 Dish 引用传递给 Ingredient 实例时,它显示 Unaccepted keyword argument

成分型号class是:

class Ingredient(models.Model):
    dish_id  = models.ForeignKey(Dish, on_delete=models.CASCADE, null = True, related_name='ingredientInfo')
  .
  .
  .    

这是我的 Dish Serializer:

class DishSerializer(serializers.ModelSerializer):


        ingredientInfo      =       IngredientSerializer(many = True)

        class Meta:
            model  = Menu
            fields = ['id', 'name','type','status','ingredientInfo']

        def create(self , validated_data):
            ingredientInfo_data  =       validated_data.pop('ingredientInfo')
            dish                 =       Dish.objects.create(**validated_data)
            for info in ingredientInfo_data:
                Ingredient.objects.create(**info, dish = dish)
            return dish

它告诉我 Ingredient() 得到了一个意外的关键字参数 'dish'

我注意到的第一件事:

class ingredient(models.Model):

您确定 class 不应该大写吗?抱歉,我没有足够的声誉,无法发表评论。

它应该是 dish_id 和你的模型一样:

Ingredient.objects.create(**info, dish_id = dish)