Los campos del serializador en Django son los mismos que los campos de formulario de Django y los campos de modelo de Django y, por lo tanto, requieren ciertos argumentos para manipular el comportamiento de esos campos. En Django REST Framework, el concepto mismo de Serialización es convertir datos de base de datos a un tipo de datos que pueda ser utilizado por javascript. Este artículo gira en torno a varios argumentos que los campos del serializador pueden usar para manipular de manera eficiente los datos dentro y fuera del serializador.
Argumentos centrales en los campos del serializador
.math-table { borde-colapso: colapsar; ancho: 100%; } .math-table td { borde: 1px sólido #5fb962; alineación de texto: izquierda! importante; relleno: 8px; } .math-table th { borde: 1px sólido #5fb962; relleno: 8px; } .math-table tr>th{ color de fondo: #c6ebd9; alineación vertical: medio; } .math-table tr:nth-child(odd) { background-color: #ffffff; }
Argumento | Descripción |
---|---|
solo lectura | Establézcalo en True para asegurarse de que el campo se use al serializar una representación, pero no al crear o actualizar una instancia durante la deserialización. |
escribir solamente | Establézcalo en True para asegurarse de que el campo se pueda usar al actualizar o crear una instancia, pero no se incluya al serializar la representación. |
requerido | Establecer esto en False también permite omitir el atributo del objeto o la clave del diccionario de la salida al serializar la instancia. |
defecto | Si se establece, proporciona el valor predeterminado que se utilizará para el campo si no se proporciona ningún valor de entrada. |
permitir nula | Normalmente, se generará un error si se pasa Ninguno a un campo serializador. Establezca este argumento de palabra clave en Verdadero si Ninguno debe considerarse un valor válido. |
fuente | El nombre del atributo que se utilizará para rellenar el campo. |
validadores | Una lista de funciones de validación que deben aplicarse a la entrada de campo entrante y que generan un error de validación o simplemente regresan. |
error de mensajes | Un diccionario de códigos de error a mensajes de error. |
etiqueta | Una string de texto corta que se puede usar como el nombre del campo en campos de formulario HTML u otros elementos descriptivos. |
texto de ayuda | Una string de texto que se puede utilizar como descripción del campo en campos de formulario HTML u otros elementos descriptivos. |
inicial | Un valor que debe usarse para completar previamente el valor de los campos de formulario HTML. |
solo lectura
Los campos de solo lectura se incluyen en la salida de la API, pero no deben incluirse en la entrada durante las operaciones de creación o actualización. Se ignorarán todos los campos de «solo lectura» que se incluyan incorrectamente en la entrada del serializador.
Establézcalo en True para asegurarse de que el campo se use al serializar una representación, pero no al crear o actualizar una instancia durante la deserialización.
Predeterminado a
Sintaxis Falsa –
read_only = True/False
Ejemplo –
field_name = serializers.CharField(read_only = True)
escribir solamente
Establézcalo en True para asegurarse de que el campo se pueda usar al actualizar o crear una instancia, pero no se incluya al serializar la representación.
Predeterminado a
Sintaxis Falsa –
write_only = True/False
Ejemplo –
field_name = serializers.CharField(write_only = True)
requerido
Normalmente, se generará un error si no se proporciona un campo durante la deserialización. Establézcalo en falso si no se requiere que este campo esté presente durante la deserialización.
Establecer esto en False también permite omitir el atributo del objeto o la clave del diccionario de la salida al serializar la instancia. Si la clave no está presente, simplemente no se incluirá en la representación de salida.
El valor predeterminado es Verdadero.
Sintaxis –
write_only = True/False
Ejemplo –
field_name = serializers.CharField(write_only = True)
defecto
Si se establece, proporciona el valor predeterminado que se utilizará para el campo si no se proporciona ningún valor de entrada. Si no se establece, el comportamiento predeterminado es no completar el atributo en absoluto.
El valor predeterminado no se aplica durante las operaciones de actualización parcial. En el caso de actualización parcial, solo los campos que se proporcionan en los datos entrantes tendrán un valor validado devuelto.
Puede establecerse en una función u otra llamada, en cuyo caso el valor se evaluará cada vez que se use. Cuando se llama, no recibirá argumentos. Si el invocable tiene un atributo require_context = True, entonces el campo del serializador se pasará como un argumento.
Por ejemplo:
class CurrentUserDefault: """ May be applied as a `default=...` value on a serializer field. Returns the current user. """ requires_context = True def __call__(self, serializer_field): return serializer_field.context['request'].user When serializing the instance, default will be used if the o
el atributo de objeto o la clave de diccionario no está presente en la instancia.
Tenga en cuenta que establecer un valor predeterminado implica que el campo no es obligatorio. La inclusión de los argumentos de palabra clave predeterminados y requeridos no es válida y generará un error.
Sintaxis –
default = value
Ejemplo –
field_name = serializers.CharField(default = "Naveen")
permitir nula
Normalmente, se generará un error si se pasa Ninguno a un campo serializador. Establezca este argumento de palabra clave en Verdadero si Ninguno debe considerarse un valor válido.
Tenga en cuenta que, sin un valor predeterminado explícito, establecer este argumento en True implicará un valor predeterminado nulo para la salida de serialización, pero no implica un valor predeterminado para la deserialización de entrada.
Predeterminado a falso
Sintaxis –
allow_null = True/False
Ejemplo –
field_name = serializers.CharField(allow_null = True)
fuente
El nombre del atributo que se utilizará para rellenar el campo. Puede ser un método que solo toma un argumento propio, como URLField(source=’get_absolute_url’), o puede usar notación punteada para recorrer atributos, como EmailField(source=’user.email’). Al serializar campos con notación punteada, puede ser necesario proporcionar un valor predeterminado si algún objeto no está presente o está vacío durante el recorrido de atributos.
El valor source=’*’ tiene un significado especial y se utiliza para indicar que todo el objeto debe pasarse al campo. Esto puede ser útil para crear representaciones anidadas o para campos que requieren acceso al objeto completo para determinar la representación de salida.
El valor predeterminado es el nombre del campo.
Sintaxis –
source = value
Ejemplo –
field_name = serializers.CharField(source = "user.name")
validadores
Una lista de funciones de validación que deben aplicarse a la entrada de campo entrante y que generan un error de validación o simplemente regresan. Las funciones de validación normalmente deberían generar serializers.ValidationError, pero el ValidationError incorporado de Django también es compatible para la compatibilidad con validadores definidos en el código base de Django o paquetes de Django de terceros.
Sintaxis –
validators = [function_1, function_2]
Ejemplo –
field_name = serializers.CharField(validations = [validate_name, validate_username])
error de mensajes
Un diccionario de códigos de error a mensajes de error. Funciona de la misma manera que error_messages – Sintaxis de validación de campo incorporada de Django
–
error_messages = {'argument':'message'}
Ejemplo –
field_name = serializers.CharField(error_messages = {"unique":"Data should be unique"})
etiqueta
Una string de texto corta que se puede usar como el nombre del campo en campos de formulario HTML u otros elementos descriptivos. Es lo mismo que la etiqueta – Validación de campo de formulario de Django
Sintaxis –
label = value
Ejemplo –
field_name = serializers.CharField(label = "Name")
texto de ayuda
Una string de texto que se puede utilizar como descripción del campo en campos de formulario HTML u otros elementos descriptivos. Es lo mismo que help_text – Django Built-in Field Validation .
Sintaxis –
help_text = value
Ejemplo –
field_name = serializers.CharField(help_text = "Enter only 10 characters")
inicial
Un valor que debe usarse para completar previamente el valor de los campos de formulario HTML. Es lo mismo que inicial: validación de campo de formulario de Django . Puede pasarle un invocable, tal como lo puede hacer con cualquier campo Django regular:
Sintaxis –
initial = value
Ejemplo –
import datetime from rest_framework import serializers class ExampleSerializer(serializers.Serializer): day = serializers.DateField(initial=datetime.date.today)
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA