jsonfield - Cómo serializar BigIntegerField, TextField en el serializador Django
integerfield django (1)
Esto se debe a que el Serializador del marco de descanso django no tiene un campo de texto. Donde su modelo tiene un TextField, necesita usar un CharField en el serializador.
CharField Una representación de texto. Opcionalmente valida el texto para que sea más corto que max_length y más largo que min_length.
Corresponde a
django.db.models.fields.CharField
odjango.db.models.fields.TextField
.
La documentación no es tan clara acerca de BigIntegerFields
de los modelos, pero esta línea para el código fuente muestra que IntegerField es nuevamente lo que debe usar en el serializador.
Tengo un modelo que tiene los siguientes atributos
from django.db import models
class ApiLogs(models.Model):
user_id = models.BigIntegerField(null=True)
ip = models.CharField(max_length=16)
user_agent = models.TextField(blank=True, null=True)
client = models.CharField(max_length=50, blank=True, null=True)
client_version = models.CharField(max_length=50, blank=True, null=True)
token = models.TextField(blank=True, null=True)
uri = models.CharField(max_length=200)
method = models.CharField(max_length=20)
He definido un serializador
from rest_framework import serializers
class ApiSerializer(serializers.Serializer):
user_id = serializers.BigIntegerField( allow_null=True)
ip = serializers.CharField(max_length=16)
user_agent = serializers.TextField(allow_blank=True, allow_null=True)
client = serializers.CharField(max_length=50, allow_blank=True, allow_null=True)
client_version = serializers.CharField(max_length=50, allow_blank=True, allow_null=True)
token = serializers.TextField(allow_blank=True, allow_null=True)
uri = serializers.CharField(max_length=200)
method = serializers.CharField(max_length=20)
Pero muestra un error similar a este
user_id = serializers.BigIntegerField( allow_null=True)
AttributeError: ''module'' object has no attribute ''BigIntegerField''
para campo de texto
user_agent = serializers.TextField(allow_blank=True, allow_null=True)
AttributeError: ''module'' object has no attribute ''TextField''
Ahora cómo serializar este tipo de datos.