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
但是,我倾向于频繁添加/删除字段Foo。如果每次Foo修改序列化器时不更新它会容易得多。这fields = '__all__'非常方便:
class FooSerializer(serializers.ModelSerializer):
    class Meta:
        model = Foo
        fields = '__all__'
        read_only_fields = fields
但是,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.
如何将所有字段标记为只读而不显式地将每个字段添加到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
| 归档时间: | 
 | 
| 查看次数: | 1801 次 | 
| 最近记录: |