Co zrobić, aby .to_representation()
i zrobić w serializers
?
Jeśli przekazuję dane do serializera, czy dane są najpierw przesyłane jako to_representation()
?
Jaki jest pożytek z tych dwóch?Użycie .to_representation() i .to_internal_value w django-rest-framework?
Odpowiedz
Jeśli chcesz utworzyć niestandardowe pole, musisz podklasować pole, a następnie zastąpić jedną lub obie metody .to_representation()
i .to_internal_value()
. Te dwie metody są używane do konwersji pomiędzy początkowym typem danych i pierwotnym typizowalnym typem danych. Typowymi typami danych pierwotnych będą zazwyczaj cyfry, łańcuchy znaków, znaki logiczne, data/godzina/data/godzina lub Brak. Mogą to być również dowolne listy lub słownika, takie jak obiekt, który zawiera tylko inne prymitywne obiekty. Inne typy mogą być obsługiwane, w zależności od mechanizmu renderowania, którego używasz.
Metoda .to_representation()
jest wywoływana w celu konwertowania początkowego typu danych na pierwotny typizowalny typ danych.
Metoda jest wywoływana w celu odtworzenia pierwotnego typu danych w jej wewnętrznej reprezentacji w pythonie. Ta metoda powinna wywołać błąd serializers.ValidationError, jeśli dane są niepoprawne. Uwaga: klasa WritableField
, która była obecna w wersji 2.x, już nie istnieje. Powinieneś podklasować Field i zastąpić to_internal_value()
, jeśli pole obsługuje wprowadzanie danych.
Ref: