2015-12-10 5 views

Odpowiedz

9

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:

  1. http://www.django-rest-framework.org/api-guide/fields/#custom-fields
  2. https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/serializers.py#L417