【问题标题】:DRF: Using Serializer field 'fields'DRF:使用序列化器字段“字段”
【发布时间】:2021-03-19 17:55:08
【问题描述】:

我想使用具有fields 字段的序列化程序:

class MySerializer(Serializer):
    fields = CharField(required=True)

但是Serializer 类已经有一个名为fields 的方法。 所以在使用实例和类的这个属性时存在歧义,这可能会导致错误并弄乱静态分析器:

>>> a = MySerializer()
>>> a.fields
{'fields': CharField(required=True)}

>>> MySerializer.fields
<django.utils.functional.cached_property object at 0x543543215670>

所以,我想知道,有没有办法用如下别名声明一个序列化程序类:

class MySerializer(Serializer):
    fields_ = CharField(required=True, alias='fields')

重要的是让它能够解析别名为fields的输入数据:

>>> a = MySerializer(data={'fields': 'some text'})
>>> a.is_valid()
True

>>> a.validated_data
OrderedDict([('fields', 'some text')])

【问题讨论】:

    标签: django serialization django-rest-framework


    【解决方案1】:

    尝试使用 ModelSerializer,它应该可以工作。

    class MySerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Your Model Class Name
            fields = ('fields',)
            # or use fields = '__all__'
    

    文档:ModelSerializer

    【讨论】:

    • 我没有在后台使用任何模型。这绝对不是我的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    相关资源
    最近更新 更多