我有一个名为RecipeSerializer()的基于模型的序列化器 . 在其中我有一个看起来像这样的创建方法:
class RecipeSerializer(serializers.ModelSerializer):
hops = HopAdditionSerializer(many=True)
fermentables = FermentableAdditionSerializer(many=True)
style = StyleSerializer()
yeast = YeastSerializer()
class Meta:
model = Recipe
exclude = ()
def create(self, validated_data):
recipe = Recipe.objects.create(**validated_data)
recipe.save();
return recipe
我正在尝试做的是与我的update()方法类似的东西 . 在文档中,它们逐个显示每个字段并设置值:
def update(self, instance, validated_data):
instance.email = validated_data.get('email', instance.email)
instance.content = validated_data.get('content', instance.content)
instance.save()
我的模型有很多领域 . 我想要做的是将验证的数据传递给类似于create方法的更新方法:
instance.update(**validated_data)
但是,我收到一个错误:
'Recipe' object has no attribute 'update'
是否可以使用经过验证的数据集更新实例的所有属性,而无需单独设置每个属性?
2 回答
@ ruddra的答案应该可以解决你的问题但如果你真的还想使用更新方法,你可以这样使用queryset的更新方法:
请注意,这甚至不会使用Recipe模型的save方法,因为它使用批量更新技术
好吧,你可以尝试这样:
FYI: 模型实例(或对象)没有任何名为
update
的方法 . 但是查询集有update方法 .