DEV Community

Maximiliano Burgos
Maximiliano Burgos

Posted on

Diario de Python | #10. Color Choice: Los colores

Los modelos están armados, por lo cual trabajar ahora con el admin iba a ser mucho más sencillo. El primer paso era crear una serie de colores y luego simular unos votos.

Armé el Verde, Rojo y Azul:

Django Admin colores

Luego definí los votos, siendo cada uno único por usuario:

Django Admin votos

Acto seguido, me di cuenta de que algo se me pasó por alto: el modelo de color no tiene ningun valor hexadecimal. Por lo tanto, si armo un color "Negro", sin definir "#000" no hay forma de colorearlo en pantalla. 😲

Migración de Color

En principio definí el campo con un default en blanco (#FFF), porque sino los registros creados previamente no iban a tener un valor asignado. Otra opción era definir el campo como null, pero eso no tendría sentido dado que cada color debía tener obligatoriamente un nombre y un valor hexadecimal:

hexa = models.CharField(max_length=7, default="#FFF")
Enter fullscreen mode Exit fullscreen mode

Por otro lado, en admin.py definí una clase para armar las columnas que quería visualizar tomando los campos de name y hexa.

class ColorAdmin(admin.ModelAdmin):
    list_display = ('name', 'hexa')


admin.site.register(Vote)
admin.site.register(Color, ColorAdmin)
Enter fullscreen mode Exit fullscreen mode

Dando como resultado:

Django Admin registros

Definir los valores hexa

Podría abrir Photoshop, Paint o algún editor online de colores, elegir uno y copiarme el valor hexadecimal. Pero me daba pereza, así que decidí hacer algo que me llevaría más trabajo: implementar una librería de colores.

Así descubrí a django-colorfield. Luego de instalarla con pip, modifiqué mi modelo:

from colorfield.fields import ColorField

(...)

hexa = ColorField(max_length=7, default="#FFF")
Enter fullscreen mode Exit fullscreen mode

Ahora, por ejemplo si quiero crear un color nuevo, tengo esta belleza en django-admin:

Django Admin selector de color

Ahora puedo definir todos los colores que quiero sin salirme del administrador.

En el próximo episodio...

Con los colores definidos, ya podemos votar uno. El problema es que la API nos deja emitir votos a cualquier usuario, y eso es una brecha de seguridad enorme.

En el próximo episodio de esta apasionante historia, veremos cómo me meto en las entrañas del módulo de autenticación y tokens para generar sesiones con DRF.

Top comments (0)