<p>这是这个问题的一个小例子。</p>
<p>用这个改变代码的那部分。</p>
<pre><code> def create(self, validated_data):
ingredients_data = validated_data.pop('ingredients')
recipe = Recipe.objects.create(**validated_data)
for ingredient in ingredients_data:
ingredient, created = Ingredient.objects.get_or_create(name=ingredient['name'])
recipe.ingredients.add(ingredient)
return recipe
</code></pre>
<p>这是编辑的方法,当你想编辑时会出错。</p>
<pre><code> def update(self, instance, validated_data):
ingredients_data = validated_data.pop('ingredients')
instance.name = validated_data['name']
instance.description = validated_data['description']
instance.directions = validated_data['directions']
for ingredient in ingredients_data:
ingredient, created = Ingredient.objects.get_or_create(name=ingredient['name'])
recipe.ingredients.add(ingredient)
return instance
</code></pre>
<p>这里是一个链接,有一个例子,这段代码类似于另一个答案,但是如果你想尝试这段代码,这里没有问题的是回购协议。祝你好运!
<a href="https://github.com/fercreek/DRFNestedSerializers">DRF Nested serializers</a></p>