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
指定模型上的数据源,而序列化器字段的名称是序列化时将命名的字段。
我正在使用 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
指定模型上的数据源,而序列化器字段的名称是序列化时将命名的字段。