0
我有一個模型,其中包含JSONField
。驗證DRF串行器中的特定字段
model.py
class Categories(models.Model):
type = models.CharField(max_length=20)
name = models.CharField(max_length=500)
details = JSONField(blank=True, null=True)
目前我使用serializers.ModelSerializer
序列化這上面的模型:
serializers.py
class CategoriesSerializer(serializers.ModelSerializer):
class Meta:
model = Categories
fields = ('id', 'type', 'name', 'details')
由於這個原因,細節字段只檢查包含valid json
。我真正需要做的是根據爲細節字段定義的Json Schema執行一些自定義驗證。但是由於我不想爲其餘字段進行任何其他自定義驗證,因此我想繼續使用由serializers.ModelSerializer
提供的驗證。有什麼辦法可以覆蓋只有一個字段的驗證,可能是通過編寫一個自定義序列化程序來獲取詳細信息字段?
注意的問題不是如何編寫自定義的驗證,但有關如何使用自定義驗證器上的一個字段串繼承
ModelSerializer
我可以使用自定義驗證器類而不是函數嗎?或者,也許在'validate_details'函數中?我需要使用一個類,因爲'details'字段有各種模式,所以我想從這裏的驗證器繼承中受益。 –
@IshanKhare你可以嘗試傳遞基於類的驗證器http://www.django-rest-framework.org/api-guide/validators/#class-based與字段的驗證器參數http://www.django-rest-framework .org/api-guide/fields /#validators – neverwalkaloner
類似於'validators = [MyDetailsValidator('details')]'? –