【发布时间】:2020-03-05 20:55:55
【问题描述】:
在 Django Rest Framework 中,我有一个序列化器。我收到一些数据,其中一个名为 categories 的数据是一个字符串数组:
{
"name": "John",
"age": 25,
"categories": ["ADC", "HJD", "RTP"]
}
我想将数组序列化为逗号分隔的字符串 ("ADC,HJD,RTP"),以便可以将其放入 CharField。
所以我在我的序列化器中创建了一个validate_categories() 方法,如下所示:
class DeviceSerializer(HALSerializer):
# here some other stuff
categories = serializers.SerializerMethodField()
class Meta:
model = Device
fields = (
'_links',
'id',
'name',
'age',
'categories',
)
def get_categories(self, obj):
if obj.categories is None:
return []
return [
obj.categories.choices[key.upper()]
for key in obj.categories
]
def validate_categories(self, categories):
print("IN THE VALIDATOR") # WE NEVER REACH THIS POINT
print(categories)
return categories
def create(self, validated_data):
# here some custom creation code
device = Device.objects.create(**validated_data)
return device
当我发布 JSON 时,对象被创建,但验证器永远不会被调用。
有人知道我在这里做错了什么吗?
【问题讨论】:
标签: python django validation serialization django-rest-framework