3 回答
TA贡献1794条经验 获得超8个赞
您可以使用连字符定义字段名称,fields并通过定义source属性将其映射到正确的 Django 模型字段extra_kwargs- 请参阅https://www.django-rest-framework.org/api-guide/serializers/#additional-keyword-arguments
要回答您的问题,您定义ThingSerializer如下:
class ThingSerializer(serializers.ModelSerializer):
class Meta:
model = Thing
fields = [
'owner-type',
]
extra_kwargs = {
'owner-type': {'source': 'owner_type'},
}
TA贡献1824条经验 获得超5个赞
您可以使用to_internal_valueDjango 的(参见 DJango Serializer 字段)来获取带连字符的密钥并重命名它。
例子:
class Thing(models.Model):
owner_type = models.CharField(max_length=8)
def to_internal_value(self, data):
data['owner_type'] = data['owner-type']
data.pop('owner-type', None)
return data
TA贡献1827条经验 获得超8个赞
这在使用模型时没有用,但回答字段中连字符的使用,更改序列化程序如下
class ThingSerializer(serializers.Serializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields.update({"owner-type": serializers.CharField(write_only=True)})
添加回答
举报