Создание вложенного сериализатора - PullRequest
1 голос
/ 19 января 2020

Я использую django остальные рамки. Я пытаюсь использовать метод create () для сериализатора. В DishSerializer, когда я пытаюсь передать Di sh ссылку на экземпляр Ingredient, он показывает Недопустимый аргумент ключевого слова

Класс модели Ingredient:

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

Вот My Di sh Сериализатор:

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 () получил неожиданный аргумент ключевого слова 'di sh'

Ответы [ 2 ]

1 голос
/ 19 января 2020

Это должно быть dish_id как в вашей модели:

Ingredient.objects.create(**info, dish_id = dish)
1 голос
/ 19 января 2020

Первое, что я заметил:

class ingredient(models.Model):

Вы уверены, что не должны использовать заглавные буквы в классе? Извините, что не могу комментировать, так как у меня недостаточно репутации.

...