django - 使用 django rest 框架在验证步骤之前修改数据

标签 django django-rest-framework

我有一个简单的 ModelForeignKey 存储创建它的用户.型号有对应的ModelSerializerModelViewSet .

问题是当用户提交一个 POST创造新记录,user应该由后端设置。我尝试覆盖 perform_createModelViewSet设置用户,但它实际上在验证步骤期间仍然失败(这是有道理的)。它回来说 user字段是必需的。

我正在考虑覆盖 user场上ModelSerializer是可选的,但我觉得可能有一种更清洁、更有效的方法来做到这一点。有任何想法吗?

最佳答案

我在寻找一种在控件进入验证器之前更新值的方法时遇到了这个答案。

这可能对其他人有用 - 这是我最终在不重写整个验证器的情况下做到的(DRF 3)。

class MyModelSerializer(serializers.ModelSerializer):
    def to_internal_value(self, data):
        data['user'] = '<Set Value Here>'

        return super(MyModelSerializer, self).to_internal_value(data)

对于那些好奇的人,我用它来将十进制值四舍五入到模型中定义的精度,这样验证器就不会抛出错误。

关于django - 使用 django rest 框架在验证步骤之前修改数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793664/

相关文章:

python - 不明白为什么我不能在 Django 中使用 use cx_Oracle

python - 如何在 Django 中调用异步函数?

python - 创建自定义身份验证

json - 超出范围的浮点值与 Django 渲染不兼容 JSON

django - 导入错误: cannot import name 'MealSerializer' from partially initialized module 'delivery_api.main.serializers'

python - Django - 方法签名与类中基方法的签名不匹配

python - 按整数顺序而不是按数字的每个数字顺序获取数据

Django rest swagger 嵌套序列化程序在示例 UI 中显示数组列表

mysql和gunicorn在同一个端口打开连接

Django Rest Framework 外键序列化