logo cosasdedevs

Cómo crear y consultar datos de tipo JSON con Postgresql y Django

Cómo crear y consultar datos de tipo JSON con Postgresql y Django

My Profile
Jun 05, 2020

¡Hola! Como todas las semanas traigo un tutorial y esta vez toca "enredar" con el ORM de Django y con PostgreSQL.

En el tutorial de hoy vamos a ver como implementar un campo de tipo json en un modelo en Django. Esto nos permitirá dar cierto nivel de dinamismo a nuestras tablas que podemos usar por ejemplo para ampliar el número de datos que puede tener una tabla sin tener que crear campos nuevos y por lo tanto, ahorrarnos problemas con el deploy.

Lo primero es instalar la librería psycopg2 para poder usar PostgreSQL, como siempre lo haremos con pip install.

pip install psycopg2

Después nos vamos a nuestro archivo settings.py y añadimos la siguiente línea para poder utilizar el campo de tipo json.

INSTALLED_APPS = [
    .
    .
    .
    'django.contrib.postgres',
]

También deberemos tener una bbdd de tipo PostgreSQL configurada en nuestro archivo settings.py.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '<bbdd>',
        'USER': '<user-bbdd>',
        'PASSWORD': '<pass-bbdd>',
        'HOST': '<host-ddbb>',
        'PORT': '<port-ddbb>',
    }
}

Ahora que ya tenemos esto, podemos ir al modelo donde queramos añadir un campo de tipo Json y para usarlo lo que necesitaremos será importarnos el tipo de dato JSONField.

from django.db import models
from django.contrib.postgres.fields import JSONField


class Config(models.Model):
    
    extra_data = JSONField()

Le ponemos el nombre que queramos y listo, ya tenemos nuestro campo de tipo Json 🎉. Ahora solo necesitamos importarlo a la bbdd para poder usarlo.

python manage.py makemigrations
python manage.py migrate

Para crear un dato de tipo json en nuestra tabla solo necesitamos pasarle el dato tipo json a nuestro campo y se guardará sin problemas.

Config.objects.create(extra_data={
	'nombre':'Alber',
	'apellidos':'Ramírez Caballero',
	'direccion': {
		'Calle': 'Hola Mundo',
		'Numero': 123
	}
})

Para consultar sobre campos de tipo json deberemos añadir el nombre del campo donde está guardado, doble guion bajo y el nombre del campo en el json.

res = Config.objects.filter(extra_data__nombre='Alber')

O si queremos acceder a un nivel más profundo del json debemos añadir el doble guion bajo por cada nivel.

res = Config.objects.filter(extra_data__direccion__Numero=123)

Y con estos sencillos pasos ya tendríamos configurado nuestro campo de tipo Json 💪.

Tengo buenas noticias, la próxima semana se viene un super tutorial que estará divido en 5 partes en el que aprenderemos como crear una API con Django Rest Framework. Si queréis estar al tanto de los próximos tutoriales os recomiendo que me sigáis en Twitter para no perderos nada 🚀.

Nos leemos 👋

227 vistas

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para mejorar la experiencia del usuario a través de su navegación. Si pulsas entendido aceptas su uso. Ver política de cookies.

🐍 Sígueme en Twitter

Si te gusta el contenido que subo y no quieres perderte nada, sígueme en Twitter y te avisaré cada vez que cree contenido nuevo 💪
Luego ¡Te sigo!