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.

Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.

Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.

Nos leemos 👋.

3108 vistas

🐍 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!

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para recopilar y analizar datos sobre la interacción de los usuarios con cosasdedevs.com. Ver política de cookies.