Campos de serializador – Django REST Framework

El serializador viene con algunos campos (entradas) que procesan datos dentro y fuera del serializador en Django REST Framework. El motivo mismo de la serialización es convertir los datos de la base de datos a un tipo de datos que pueda ser utilizado por javascript. Por ejemplo, si tiene una clase con el nombre Employee y sus campos como Employee_id, Employee_name, is_admin, etc. Entonces, necesitará AutoField, CharField y BooleanField para almacenar y manipular datos a través de Django. Uno necesita varios campos para impartir validaciones predeterminadas a los datos, es decir, uno usaría EmailField para almacenar correo electrónico porque valida los datos en una dirección de correo electrónico. 
Este artículo gira en torno a varios campos que se pueden usar en un serializador en Django REST Framework y cómo se pueden usar. Los campos de serializador en Django REST Framework se pueden dividir en las siguientes categorías: 

Campos booleanos

Hay dos campos principales para los campos booleanos: BooleanField y NullBooleanField.  

campo booleano

Un campo booleano utilizado para envolver valores verdaderos o falsos . Funciona igual que BooleanField – Django Models . De forma predeterminada, las instancias de serializers.BooleanField se crean de forma predeterminada como False. 
Sintaxis – 

field_name = serializers.BooleanField() 

NullBooleanField

Un campo booleano que acepta valores True , False y Null . Funciona igual que NullBooleanField – Django Models . De forma predeterminada, las instancias de serializers.NullBooleanField se crean de forma predeterminada como none. 
Sintaxis –  

field_name = serializers.NullBooleanField()

Para ver más, visite – Campos booleanos en serializadores – Django REST Framework  

Campos de string

Hay tres campos principales: CharField, EmailField y RegexField.  

CharField

CharField se utiliza para almacenar la representación de texto. Opcionalmente valida el texto para que sea más corto que max_length y más largo que min_length. Funciona igual que CharField – Django Models
Tiene los siguientes argumentos:  

  • max_length : valida que la entrada no contenga más de este número de caracteres.
  • min_length : valida que la entrada no contenga menos de este número de caracteres.
  • allow_blank : si se establece en True, la string vacía debe considerarse un valor válido. Si se establece en False, la string vacía se considera no válida y generará un error de validación. El valor predeterminado es falso.
  • trim_whitespace : si se establece en True, se recortan los espacios en blanco iniciales y finales. El valor predeterminado es Verdadero.

Sintaxis – 

field_name = serializers.CharField(*args, **kwargs) 

Campo de correo electrónico

EmailField también es una representación de texto y valida el texto para que sea una dirección de correo electrónico válida. Es lo mismo que EmailField – Django Models . Toma todos los argumentos de CharField para las mismas funcionalidades. 
Sintaxis – 

field_name = serializers.EmailField(*args, **kwargs) 

RegexField

Como lo define el nombre, RegexField hace coincidir la string con una expresión regular en particular; de lo contrario, genera un error. Es lo mismo que RegexField – Django Forms . Toma todos los argumentos de CharField para las mismas funcionalidades. 
Sintaxis –  

field_name = serializers.RegexField(*args, **kwargs)

Para verificar más, visite – Campos de string en serializadores – Django REST Framework  

Campos de URL

Hay dos campos principales: URLField y SlugField.  

campo URL

URLField es básicamente un RegexField que valida la entrada contra un patrón de coincidencia de URL. Espera direcciones URL completas del formulario http:///. Funciona igual que URLField – Django Models 

Tiene los siguientes argumentos:  

  • allow_blank : si se establece en True, la string vacía debe considerarse un valor válido. Si se establece en False, la string vacía se considera no válida y generará un error de validación. El valor predeterminado es falso.

Sintaxis – 

field_name = serializers.URLField(*args, **kwargs) 

campo de babosas

SlugField es un RegexField que valida la entrada contra el patrón [a-zA-Z0-9_-]+. Es lo mismo que SlugField – Django Models

Sintaxis –  

field_name = serializers.SlugField(*args, **kwargs)

Para verificar más, visite – Campos de URL en serializadores – Django REST Framework  

Campos Numéricos

Hay tres campos principales: IntegerField, FloatField y DecimalField.  

CampoEntero

IntegerField es básicamente un campo entero que valida la entrada contra la instancia int de Python. Es lo mismo que IntegerField – Django Models 

Tiene los siguientes argumentos:  

  • max_value Valida que el número proporcionado no sea mayor que este valor.
  • min_value Valida que el número proporcionado no sea inferior a este valor.

Sintaxis – 

field_name = serializers.IntegerField(*args, **kwargs) 

campo flotante

FloatField es básicamente un campo flotante que valida la entrada contra la instancia flotante de Python. Es lo mismo que FloatField – Django Models 

Tiene los siguientes argumentos:  

  • max_value Valida que el número proporcionado no sea mayor que este valor.
  • min_value Valida que el número proporcionado no sea inferior a este valor.

Sintaxis – 

field_name = serializers.FloatField(*args, **kwargs) 

campo decimal

DecimalField es básicamente un campo decimal que valida la entrada contra la instancia decimal de Python. Es lo mismo que DecimalField – Django Models 

Tiene los siguientes argumentos:  

  • max_digits El número máximo de dígitos permitidos en el número. Debe ser Ninguno o un número entero mayor o igual que decimal_places.
  • decimal_places El número de lugares decimales para almacenar con el número.
  • max_value Valida que el número proporcionado no sea mayor que este valor.
  • min_value Valida que el número proporcionado no sea inferior a este valor.
  • localizar Establézcalo en Verdadero para habilitar la localización de entrada y salida en función de la configuración regional actual.

Sintaxis –  

field_name = serializers.DecimalField(*args, **kwargs)

Para verificar más, visite – Campos numéricos en serializadores – Django REST Framework  

Campos de fecha y hora

Hay cuatro campos principales: DateTimeField, DateField, TimeField y DurationField. 
 

Campo de fecha y hora

DateTimeField es un campo serializador utilizado para la representación de fecha y hora. Es lo mismo que – DateTimeField – Modelos Django 

Tiene los siguientes argumentos:  

  • formato : una string que representa el formato de salida. Si no se especifica, el valor predeterminado es el mismo que la clave de configuración DATETIME_FORMAT, que será ‘iso-8601’ a menos que se establezca. El establecimiento de una string de formato indica que los valores de retorno de to_representation deben forzarse a una salida de string. Las strings de formato se describen a continuación. Establecer este valor en Ninguno indica que los objetos de fecha y hora de Python deben ser devueltos por to_representation. En este caso, el renderizador determinará la codificación de fecha y hora.
  • input_formats : una lista de strings que representan los formatos de entrada que se pueden usar para analizar la fecha. Si no se especifica, se utilizará la configuración DATETIME_INPUT_FORMATS, cuyo valor predeterminado es [‘iso-8601’].
  • default_timezone : un pytz.timezone que representa la zona horaria. Si no se especifica y la configuración USE_TZ está habilitada, el valor predeterminado es la zona horaria actual. Si USE_TZ está deshabilitado, los objetos de fecha y hora serán ingenuos.

Sintaxis – 

field_name = serializers.DateTimeField(*args, **kwargs) 

campo de fecha

DateField es un campo serializador utilizado para la representación de fechas. A menudo, uno necesita almacenar la fecha, como en un modelo de blog, la fecha de cada publicación debe almacenarse. Este campo es igual que DateField – Django Models 
Tiene los siguientes argumentos –  

  • formato : una string que representa el formato de salida. Si no se especifica, el valor predeterminado es el mismo que la clave de configuración DATE_FORMAT, que será ‘iso-8601’ a menos que se establezca. El establecimiento de una string de formato indica que los valores de retorno de to_representation deben forzarse a una salida de string. Las strings de formato se describen a continuación. Establecer este valor en Ninguno indica que to_representation debe devolver los objetos de fecha de Python. En este caso, el renderizador determinará la codificación de la fecha.
  • input_formats : una lista de strings que representan los formatos de entrada que se pueden usar para analizar la fecha. Si no se especifica, se utilizará la configuración DATE_INPUT_FORMATS, cuyo valor predeterminado es [‘iso-8601’].

Sintaxis – 

field_name = serializers.DateField(*args, **kwargs) 

Campo de tiempo

Timefield es un campo serializador utilizado para la representación del tiempo. A menudo, es necesario almacenar la fecha, como en un modelo de blog, se debe almacenar la hora de cada publicación. 

Tiene los siguientes argumentos:  

  • formato : una string que representa el formato de salida. Si no se especifica, el valor predeterminado es el mismo que la clave de configuración TIME_FORMAT, que será ‘iso-8601’ a menos que se establezca. El establecimiento de una string de formato indica que los valores de retorno de to_representation deben forzarse a una salida de string. Las strings de formato se describen a continuación. Establecer este valor en Ninguno indica que los objetos de tiempo de Python deben ser devueltos por to_representation. En este caso, la codificación de tiempo será determinada por el renderizador.
  • input_formats : una lista de strings que representan los formatos de entrada que se pueden usar para analizar la fecha. Si no se especifica, se utilizará la configuración TIME_INPUT_FORMATS, que por defecto es [‘iso-8601’].

Sintaxis – 

field_name = serializers.TimeField(*args, **kwargs) 

DuraciónCampo

DurationField es un campo serializador utilizado para la representación de la duración. Este campo es el mismo que DurationField – Django Models 
Tiene los siguientes argumentos –  

  • max_value Valida que la duración proporcionada no sea mayor que este valor.
  • min_value Valida que la duración proporcionada no sea inferior a este valor.

Sintaxis –  

field_name = serializers.DurationField(*args, **kwargs)

Para verificar más, visite – Campos de fecha y hora en serializadores – Django REST Framework  

Campos de selección de opciones

Hay dos campos principales: Choice y MultipleChioceField. 
 

campo de elección

ChoiceField es básicamente un CharField que valida la entrada contra un valor de un conjunto limitado de opciones. Este campo es el mismo que ChoiceField – Django Forms

Tiene los siguientes argumentos:  

  • opciones : una lista de valores válidos o una lista de tuplas (clave, nombre_de_visualización).
  • allow_blank : si se establece en True, la string vacía debe considerarse un valor válido. Si se establece en False, la string vacía se considera no válida y generará un error de validación. El valor predeterminado es falso.
  • html_cutoff : si se establece, esta será la cantidad máxima de opciones que se mostrarán en un menú desplegable de selección de HTML. Se puede utilizar para garantizar que los ChoiceFields generados automáticamente con selecciones posibles muy grandes no impidan que se represente una plantilla. El valor predeterminado es Ninguno.
  • html_cutoff_text : si se establece, se mostrará un indicador de texto si se ha cortado el número máximo de elementos en un menú desplegable de selección de HTML. El valor predeterminado es «Más de {count} artículos…»

Sintaxis – 

field_name = serializers.ChoiceField(*args, **kwargs) 

campo de opción múltiple

ChoiceField es básicamente un CharField que valida la entrada contra un conjunto de cero, uno o muchos valores, elegidos de un conjunto limitado de opciones. Este campo es el mismo que MultipleChoiceField – Django Forms

Sintaxis –  

field_name = serializers.MultipleChoiceField(*args, **kwargs)

Para verificar más, visite – Campos de selección de elección en serializadores – Django REST Framework  

Campos de carga de archivos

Hay dos campos principales: FileField e ImageField.  

campo de archivo

FileField es básicamente una representación de archivo. Realiza la validación estándar de FileField de Django. Este campo es el mismo que FileField – Django Models

Tiene los siguientes argumentos:  

  • max_length : designa la longitud máxima para el nombre del archivo.
  • allow_empty_file : designa si se permiten archivos vacíos.
  • use_url : si se establece en True, los valores de string de URL se utilizarán para la representación de salida. Si se establece en False, se utilizarán valores de string de nombre de archivo para la representación de salida. El valor predeterminado es el valor de la clave de configuración UPLOADED_FILES_USE_URL, que es True a menos que se establezca lo contrario.

Sintaxis – 

field_name = serializers.FileField(*args, **kwargs) 

campo de imagen

ImageField es una representación de imagen. Valida que el contenido del archivo cargado coincida con un formato de imagen conocido. Esto es lo mismo que ImageField – formularios Django 

Tiene los siguientes argumentos:  

  • max_length : designa la longitud máxima para el nombre del archivo.
  • allow_empty_file : designa si se permiten archivos vacíos.
  • use_url : si se establece en True, los valores de string de URL se utilizarán para la representación de salida. Si se establece en False, se utilizarán valores de string de nombre de archivo para la representación de salida. El valor predeterminado es el valor de la clave de configuración UPLOADED_FILES_USE_URL, que es True a menos que se establezca lo contrario.

Sintaxis –  

field_name = serializers.ImageField(*args, **kwargs)

Para ver más, visite – Campos de carga de archivos en serializadores – Django REST Framework 

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; }  

Nombre del campo Descripción
campo booleano Un campo booleano utilizado para envolver valores verdaderos o falsos.
NullBooleanField Un campo booleano que acepta valores True, False y Null.
CharField CharField se utiliza para almacenar la representación de texto.
Campo de correo electrónico EmailField también es una representación de texto y valida el texto para que sea una dirección de correo electrónico válida.
RegexField Como lo define el nombre, RegexField hace coincidir la string con una expresión regular en particular; de lo contrario, genera un error.
campo URL URLField es básicamente un RegexField que valida la entrada contra un patrón de coincidencia de URL.
campo de babosas SlugField es un RegexField que valida la entrada contra el patrón [a-zA-Z0-9_-]+.
CampoDirecciónIP IPAddressField es un campo que garantiza que la entrada sea una string IPv4 o IPv6 válida.
CampoEntero IntegerField es básicamente un campo entero que valida la entrada contra la instancia int de Python.
campo flotante FloatField es básicamente un campo flotante que valida la entrada contra la instancia flotante de Python.
campo decimal DecimalField es básicamente un campo decimal que valida la entrada contra la instancia decimal de Python.
Campo de fecha y hora DateTimeField es un campo serializador utilizado para la representación de fecha y hora.
campo de fecha DateField es un campo serializador utilizado para la representación de fechas.
Campo de tiempo Timefield es un campo serializador utilizado para la representación del tiempo.
DuraciónCampo DurationField es un campo serializador utilizado para la representación de la duración.
campo de elección ChoiceField es básicamente un CharField que valida la entrada contra un valor de un conjunto limitado de opciones.
campo de opción múltiple MultipleChoiceField es básicamente un CharField que valida la entrada contra un conjunto de cero, uno o muchos valores, elegidos de un conjunto limitado de opciones.
campo de archivo FileField es básicamente una representación de archivo. Realiza la validación estándar de FileField de Django.
campo de imagen ImageField es una representación de imagen. Valida que el contenido del archivo cargado coincida con un formato de imagen conocido.
Campo de lista ListField es básicamente un campo de lista que valida la entrada contra una lista de objetos.
campo JSON JSONField es básicamente una clase de campo que valida que la estructura de datos entrantes consiste en primitivas JSON válidas.
Campo escondido HiddenField es una clase de campo que no toma un valor basado en la entrada del usuario, sino que toma su valor de un valor predeterminado o invocable.
DictField DictField es básicamente un campo de diccionario que valida la entrada contra un diccionario de objetos.

Argumentos centrales en los campos del serializador

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. 

.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.

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 *