nie*_*kas 5 serialization django-models python-3.x django-rest-framework
我能够制作只读模型序列化器,例如:
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = ['name', 'ratio']
read_only_fields = fields
Run Code Online (Sandbox Code Playgroud)
但是,我倾向于频繁添加/删除字段Foo。如果每次Foo修改序列化器时不更新它会容易得多。这fields = '__all__'非常方便:
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = '__all__'
read_only_fields = fields
Run Code Online (Sandbox Code Playgroud)
但是,read_only_fields不接受__all__作为有效选项并引发此异常:
Exception Type: TypeError at /api/foo/
Exception Value: The `read_only_fields` option must be a list or tuple. Got str.
Run Code Online (Sandbox Code Playgroud)
如何将所有字段标记为只读而不显式地将每个字段添加到read_only_fields列表中?
小智 5
您可以get_fields像这样扩展方法:
def get_fields(self):
fields = super().get_fields()
for field in fields.values():
field.read_only = True
return fields
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |