uba*_*dub 6 python django python-3.x django-rest-framework
现在,DRFread_only在Serializer构造函数上的参数意味着您既不能创建也不能更新字段,而构造write_only函数上的参数Serializer允许创建或更新字段,但在序列化表示时阻止输出字段。
是否有任何(优雅的)方法Serializer可以在创建有问题的模型时(在create()上调用 时Serializer)创建一个可以创建一次的字段,但以后不能通过修改update?
注意:是的,我已经看到了这个解决方案,但老实说,我觉得它丑陋且不符合 Pythonic。有没有更好的办法?
class TodoModifySerializer(ModelSerializer):
def to_internal_value(self, data):
data = super(TodoModifySerializer, self).to_internal_value(data)
if self.instance:
# update
for x in self.create_only_fields:
data.pop(x)
return data
class Meta:
model = Todo
fields = ('id', 'category', 'title', 'content')
create_only_fields = ('title',)
Run Code Online (Sandbox Code Playgroud)
您可以to_internal_value通过在更新时删除此数据来实现