【问题标题】:DRF Serializer handling generated fieldDRF Serializer 处理生成的字段
【发布时间】:2018-03-30 11:25:01
【问题描述】:
我有一个 Django 模型,它有两个必填字段 - name 和一个 slug。
slug 可以在 POST 请求期间传入,或者可以从 name 生成。然后我有一个带有 slug 和 name 字段的模型序列化器。如果未传入 slug,则会引发错误,即 slug 是必填字段。但是,我想这样做,如果没有传入 slug,我会从始终传入的名称生成它。有没有办法在 Serializer 中优雅地做到这一点?
【问题讨论】:
标签:
django
django-rest-framework
serialization
【解决方案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)