django 更新中的DRF HiddenField的字段级验证

camsedfj  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(91)

在DRF serializers.HiddenField()上执行字段级验证的正确方法是什么?我尝试了什么(假设字段名为x):

  • 向序列化程序类添加validate_x()方法。在部分更新操作(HTTP PATCH)中未调用此方法。
  • 尝试在validate(self, data)方法中验证它。数据字典中不存在。
  • 尝试创建验证程序并将其传递给验证程序字段参数,但未调用它们。

在部分更新中,如何正确添加自定义校验?我使用的是DRF v3.12.4

注意:我希望字段从请求体定义中隐藏,并且仍然能够在序列化器中验证和包含字段。

lx0bsm1f

lx0bsm1f1#

我很确定你不应该验证它?此字段不是由用户提供的,因此不需要验证。
在DRF文档中,它被称为:
一个字段类,它不根据用户输入获取值,而是从默认值或可调用值中获取值。
他们还谈到了它的验证:
使用HiddenField。此字段将出现在validated_data中,但不会在序列化器输出表示中使用。
但是,您可以在createupdate方法或序列化程序中执行特殊/条件操作,因为您可以访问validated_data,其中的字段将是可访问的
看这里和这里

相关问题