Ish*_*are 0 django django-validation python-3.x django-rest-framework
我有一个模型JSONField。
model.py
class Categories(models.Model):
type = models.CharField(max_length=20)
name = models.CharField(max_length=500)
details = JSONField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用serializers.ModelSerializer上述模型进行序列化:
serializers.py
class CategoriesSerializer(serializers.ModelSerializer):
class Meta:
model = Categories
fields = ('id', 'type', 'name', 'details')
Run Code Online (Sandbox Code Playgroud)
因此,仅检查details字段包含valid json。我真正需要做的是基于为详细信息字段定义的Json Schema执行一些自定义验证。但是,由于我不希望对其余字段进行任何其他自定义验证,因此我想继续使用所提供的验证serializers.ModelSerializer。我有什么办法可以只为一个字段覆盖一个验证,而可能只为details字段编写一个自定义序列化程序?
注意问题不是关于如何编写自定义验证器,而是关于如何在继承自序列化器的字段上使用该自定义验证器
ModelSerializer
DRF的串行器提供字段级别的验证选项。您可以通过实现validate_details方法来执行明细字段验证:
class CategoriesSerializer(serializers.ModelSerializer):
class Meta:
model = Categories
fields = ('id', 'type', 'name', 'details')
def validate_details(self, value):
if value['not_valid']:
raise serializers.ValidationError("Not valid")
return value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3000 次 |
| 最近记录: |