【问题标题】: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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-05
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      • 2018-03-23
      相关资源
      最近更新 更多