3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用連字符定義字段名稱,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貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用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貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
這在使用模型時(shí)沒有用,但回答字段中連字符的使用,更改序列化程序如下
class ThingSerializer(serializers.Serializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields.update({"owner-type": serializers.CharField(write_only=True)})
添加回答
舉報(bào)