Cosa fanno .to_representation()
e .to_internal_value
fare in serializers
?
Se si passano dati a un serializzatore, i dati vengono lanciati prima to_representation()
?
Qual è l'utilizzo di questi due?Uso di .to_representation() e .to_internal_value in django-rest-framework?
risposta
Se si desidera creare un campo personalizzato, è necessario creare una sottoclasse campo e poi ignorare uno dei due o entrambi i metodi .to_representation()
e .to_internal_value()
. Questi due metodi vengono utilizzati per convertire tra il tipo di dati iniziale e un tipo di dati serializzabile primitivo. I tipi di dati primitivi saranno tipicamente di numero, stringa, booleano, data/ora/datetime o Nessuno. Possono anche essere qualsiasi elenco o dizionario come oggetto che contiene solo altri oggetti primitivi. Altri tipi potrebbero essere supportati, a seconda del renderer che si sta utilizzando.
Il metodo .to_representation()
viene chiamato per convertire il tipo di dati iniziale in un tipo di dati serializzabile primitivo.
Il metodo to_internal_value()
viene chiamato per ripristinare un tipo di dati primitivo nella sua rappresentazione python interna. Questo metodo dovrebbe generare un errore serializers.ValidationError se i dati non sono validi.
Si noti che la classe WritableField
presente nella versione 2.x non esiste più. È necessario eseguire la sottoclasse Field e sovrascrivere to_internal_value()
se il campo supporta l'immissione dei dati.
Rif: