Argumentos centrales en los campos del serializador – Django REST Framework

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *