J'ai un modèle avec un JSONField
.Valider un champ spécifique dans le sérialiseur 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)
Actuellement, je suis en utilisant serializers.ModelSerializer
pour sérialisation ce modèle ci-dessus:
serializers.py
class CategoriesSerializer(serializers.ModelSerializer):
class Meta:
model = Categories
fields = ('id', 'type', 'name', 'details')
En raison de cela, le champ des détails est vérifiée uniquement pour contenir valid json
. Ce que je dois vraiment faire est d'effectuer une validation personnalisée basée sur le Json Schema défini pour le champ de détails. Cependant, comme je ne veux pas d'autres validations personnalisées pour le reste des champs, je voudrais continuer à utiliser les validations fournies par serializers.ModelSerializer
. Est-il possible de remplacer une validation pour un seul champ, probablement en écrivant un sérialiseur personnalisé pour seulement le champ de détails?
question Note n'est pas sur la façon d'écrire un validateur personnalisé, mais sur la façon d'utiliser cette validateur personnalisé sur un champ dans le sérialiseur héritant
ModelSerializer
puis-je utiliser ma classe Validator personnalisée au lieu de la fonction? Ou peut-être dans la fonction 'validate_details'? J'ai besoin d'utiliser une classe car il y a plusieurs schémas pour le champ 'details', donc je voudrais profiter de l'héritage des validateurs ici. –
@IshanKhare vous pouvez essayer de passer le validateur basé sur la classe http://www.django-rest-framework.org/api-guide/validators/#class-based avec l'argument de validation des champs http: //www.django-rest-framework .org/api-guide/fields/# validateurs – neverwalkaloner
quelque chose comme 'validators = [MyDetailsValidator ('details')]'? –