TransWikia.com

Como reemplazar un Charfield por iconos en Django

Stack Overflow en español Asked by Liam on March 7, 2021

sepan disculpar si no expreso correctamente la pregunta.
Tengo la intención de que una persona pueda elegir entre varios sistemas operativos y que al elegir se imprima en un Card de Bootstrap un icono, osea reemplazar caracteres por iconos las cuales utilizo de la página iconmoon, no he intentado nada por que realmente no tengo absolutamente idea de como desarrollar eso, ante cualquier duda responderé lo mejor posible, gracias de ante mano, les dejaré una foto de ejemplo:
introducir la descripción de la imagen aquí

Así es iconmoon, viene con una carpeta font y lleva esto adentro:
introducir la descripción de la imagen aquí

y también viene con un style.css

Esto es mi template:
introducir la descripción de la imagen aquí

Y esto es mi models.py
introducir la descripción de la imagen aquí

One Answer

Tu modelo debería ser así:

class Platform(models.Model):
    platform = [
        ('windows', 'Windows'),
        ...
    ]

    platformTags = {
        'windows': 'windows8',
        ...
    }

    choice_platform = MultiSelectField(choices=platform)

    def get_platform_tags(self):
        return [
            (platform, self.platformTags.get(platform)) for platform in self.choice_platform
        ]

Cabe recalcar que los choices platform y platformTags, deben estar definidas dentro de la clase o modelo Platform, si no es asi, no funcionara, ademas de que es de buena practica.

El método get_platform_tags, retornara una lista con tuplas, el primer elemento de cada tupla es el valor real que se establece en el modelo respecto a los choices y el segundo elemento de cada tupla son las clases CSS correspondientes.

Entonces, tu template debería ser así:

{% for platform, tags in product.get_platform_tags %}
    <span class="{{ tags }}"></span>
{% endfor %}

Si no es necesario saber en el template a que plataforma pertenecen las clases CSS, entonces no es necesario retornar una lista con tuplas, si no simplemente las clases CSS, después de todo, tu objetivo es mostrar los iconos.

Entonce el método get_platform_tags podría ser así:

def get_platform_tags(self):
    return [self.platformTags.get(platform) for platform in self.choice_platform]

Simplemente retorna una lista de las clases CSS en base a los sistemas operativos seleccionados. Entonces, podrías mostrar los iconos en tu template tal que así:

{% for tags in product.get_platform_tags %}
    <span class="{{ tags }}"></span>
{% endfor %}

Espero haberte ayudado.

Answered by Julio Cesar on March 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP