django serializers 增加update方法,执行save方法如何保存外键id
时间: 2023-11-28 09:50:06 浏览: 62
在 Django 的 serializer 中,如果想要在 update 方法中保存外键 id,需要在 serializer 的 Meta 中添加 extra_kwargs 参数来指定外键字段的属性,例如:
```python
class MySerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('id', 'name', 'foreign_key')
extra_kwargs = {
'foreign_key': {'write_only': True}
}
def update(self, instance, validated_data):
foreign_key_id = validated_data.pop('foreign_key', None)
# 更新 MyModel 的其他字段
instance.name = validated_data.get('name', instance.name)
# 保存外键 id
if foreign_key_id is not None:
instance.foreign_key_id = foreign_key_id
instance.save()
return instance
```
在上面的例子中,我们在 serializer 的 Meta 中使用 extra_kwargs 参数,将 foreign_key 字段标记为 write_only,表示在序列化时不返回该字段。然后在 update 方法中,我们将 validated_data 中的 foreign_key 取出,并将其保存到 instance 的 foreign_key_id 字段中。最后执行 instance.save() 方法保存数据。
阅读全文