Django solo

imagen / Pexels / Pyxabay
  
15 de Abril de 2018   0  

¿Qué es un singleton?

 

Es un patrón de diseño que permite restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto. Su intención consiste en garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.

Para el uso de Singletones con Django, te presentamos el día de hoy una librería muy interesante:  "django-solo".

¿Qué es Django Solo?

 

Es una librería que te ayuda a trabajar con singletons: tablas de base de datos que solo tienen una fila.

Los Singletons son útiles para cosas como la configuración global que desea editar desde el administrador en lugar de tenerlos en Django settings.py.

 

Ejemplo de Uso.

Supongamos que requerimos una configuración global para nuestro proyecto. Para esto deberemos generar un nuevo modelo utilizando el objeto especial "SingletonModel" el cual se vería de la siguiente manera: 

 

# models.py

from django.db import models
from solo.models import SingletonModel

class SiteConfiguration(SingletonModel):
    site_name = models.CharField(max_length=255, default='Site Name')
    maintenance_mode = models.BooleanField(default=False)

    def __unicode__(self):
        return u"Site Configuration"

    class Meta:
        verbose_name = "Site Configuration"

 

Ahora lo registramos en admin.py para tenerlo disponible desde nuestro administrador Django: 

 

# admin.py

from django.contrib import admin
from solo.admin import SingletonModelAdmin
from config.models import SiteConfiguration

admin.site.register(SiteConfiguration, SingletonModelAdmin)

Con esto ya lo podríamos ver en el admin. Ahora para poder utilizarlo en cualquier parte de nuestro código, podemos hacer lo siguiente: 

# COmo solo existe un elemento en la tabla, podemos utilizar directamente un
get() para obtener nuestro registro. 

from .models import SiteConfiguration
config = SiteConfiguration.objects.get()

# Utilizar la función "get_solo" permite crear un registro si no se 
encuentra creado en la base de datos. 

config = SiteConfiguration.get_solo()

 

¡Esto es muy fácil! Ya con el objeto config, podemos acceder a las configuraciones globales sin requerir validaciones adicionales. 

 

¿Cómo lo instalamos?

Súper sencillo: 

  • Instalar utilizando el comando "pip install django-solo"
  • Agregamos "solo" a nuestra lista de aplicaciones Django en "INSTALLED_APPS"

 

Para mayor información visita el repositorio oficial en el siguiente link: https://github.com/lazybird/django-solo



Alex Dzul

FullStack Python / Django Developer. #jslove

Etiquetas

Temas relacionados