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