我有一个简单的 Model
用 ForeignKey
存储创建它的用户.型号有对应的ModelSerializer
和 ModelViewSet
.
问题是当用户提交一个 POST
创造新记录,user
应该由后端设置。我尝试覆盖 perform_create
在 ModelViewSet
设置用户,但它实际上在验证步骤期间仍然失败(这是有道理的)。它回来说 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/