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:
- 1. Come serializzare in più modelli usando DjangoRestFramework
- 2. djangorestframework: filtraggio in un campo correlato
- 3. Quando vengono creati e aggiornati i file chiamati serializzatore djangorestframework?
- 4. errori serializzatore djangorestframework: {u'non_field_errors ': [u'No input fornito']}
- 5. DjangoRestFramework - Omettere campi nulli durante la serializzazione di oggetti
- 6. caricare l'immagine in imagefield con djangorestframework utilizzando json e testare questo con CURL
- 7. Uso di AND e OR in SQLite
- 8. Uso di color e color.darker in Android?
- 9. Uso di rendimento e rendimento in Ruby
- 10. Uso di FFmpeg e IPython
- 11. Uso di neocomplcache e clang_complete?
- 12. DDD e uso di getter e setter
- 13. Uso latex e Vim
- 14. Uso Meteor.methods e Meteor.call
- 15. Thread e proxy locale in Werkzeug. Uso
- 16. Uso corretto di os.path e os.join
- 17. Uso di Velocity con piastrelle e molla
- 18. Uso efficiente di as.numeric() e factor()
- 19. Uso simultaneo di ActiveMQ e RabbitMQ
- 20. Uso di Recv-Q e Send-Q
- 21. Uso di utenti mysqldump e database
- 22. Uso di Ninject con Owin e InRequestScope
- 23. Uso corretto di ParallelOptions, TaskCreationOptions e Task.Factory.StartNew?
- 24. Uso di Node.js con Django e Backbone.js
- 25. uso efficiente di R data.table e unico()
- 26. PyQt uso corretto di emit() e pyqtSignal()
- 27. Uso di sempre e sempre dichiarazioni
- 28. Uso di => in PHP
- 29. Uso di _Noreturn in C11
- 30. Uso di Javascript in Excel