DRF 将数据从 API 反序列化到 Django 模型

DRF deserializing data from API to django model

我正在使用 django-rest-framework (DRK) 的序列化器

我正在从外部获取数据 API,我想将此数据转换为内部模型(此处为 Period)

问题是外部字段的格式 api 是这样的:

{"DateFrom": "2020-02-10T00:00:00"}

我想重命名为“date_from”字段。

这是我尝试过的:

序列化器:

class PeriodSerializer(serializers.ModelSerializer):
    date_from = serializers.DateTimeField(write_only=True, source='DateFrom')

    class Meta:
        model = Period
        fields = ('date_from',)

请注意,我尝试使用“write_only=True, source='DateFrom'

然后在我的代码中:

json = {"DateFrom": "2020-02-10T00:00:00"}

serializer = PeriodSerializer(data=json)
serializer.is_valid() # This is returning False

print(serializer.errors)  

然后输出是:

{'date_from': [ErrorDetail(string='This field is required.', code='required')]}

如何处理? (以最佳方式(良好实践))

我认为你在这里有些倒退。给定你的模型和你在 API 中公开的内容,你会想做:

class PeriodSerializer(serializers.ModelSerializer):
    DateFrom = serializers.DateTimeField(write_only=True, source='date_from')

source 指定模型上的数据源,而序列化器字段的名称是序列化时将命名的字段。