【发布时间】:2015-03-20 14:44:37
【问题描述】:
我正在编写一个食谱组织者作为课程的示例项目。除了使用一些非常基本的功能外,我对 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="This is a quick description of your recipe")
directions = models.TextField(help_text="How to make the recipe")
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 创建新配方时,没有相关的成分。
但是我似乎无法找到一种方法来保持与食谱相关的成分。
【问题讨论】:
标签: python django serialization django-rest-framework