DRF Serializer处理生成的字段

时间:2017-10-18 14:33:19

标签: django django-rest-framework serializer

我有一个Django模型,它有两个必填字段 - 名称 slug slug 可以在POST请求期间传入,也可以从名称生成。然后我有一个带有 slug 名称字段的模型Serializer。如果没有传递slug,则抛出一个错误,即slug是必填字段。但是,我想这样做,如果没有传入slug,我会从传入的名称生成它。有没有办法在Serializer中优雅地执行此操作?

1 个答案:

答案 0 :(得分:1)

尝试此操作:将required=False添加到slug序列化程序字段,然后在序列化程序的create方法中将slug字段默认为生成的值,如下所示:

class MyModelSerializer(serializers.Serializer):
    slug = serializers.SlugField(required=False)

    class Meta:
        model = MyModel

    def create(self, data):
        if not data.get('slug'):
            data['slug'] = generate_slug_from_name(data.get('name'))
        return super(MyModelSerializer, self).create(data)