简体   繁体   English

DRF:使用序列化器字段“字段”

[英]DRF: Using Serializer field 'fields'

I want to use a serializer having the field fields :我想使用具有字段fields的序列化程序:

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

But Serializer class already has a method named fields .但是Serializer器 class 已经有一个名为fields的方法。 So there is ambiguity in using this attribute of the instance and class, which can lead to errors and mess up with static analyzers:所以使用实例的这个属性和 class 存在歧义,这可能会导致错误并与 static 分析器混淆:

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

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

So, I wonder, is there the way to declare a serializer class with an alias like:所以,我想知道,有没有办法用如下别名声明一个序列化程序 class:

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

The important part is to make it able to parse input data with the alias fields :重要的部分是使它能够使用别名fields解析输入数据:

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

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

Try using ModelSerializer, it should work.尝试使用 ModelSerializer,它应该可以工作。

class MySerializer(serializers.ModelSerializer):

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

Documentation: ModelSerializer文档: 模型序列化器

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM