嵌套的序列化程序创建

问题描述 投票:1回答:2

我正在使用django rest框架。我正在尝试使用create()方法进行序列化。在DishSerializer中,当我尝试将Dish引用传递给Ingredient实例时,它显示Unaccepted关键字arguments

成分模型类别为:

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

这是我的菜序列化器:

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'

django django-rest-framework django-serializer
2个回答
1
投票

我注意到的第一件事:

class ingredient(models.Model):

您确定不应该大写班级吗?对不起,我没有足够的声誉,所以我无法发表评论。


0
投票

应该与您的模型一样为dish_id

Ingredient.objects.create(**info, dish_id = dish)
© www.soinside.com 2019 - 2024. All rights reserved.