El metodo __str__ en los modelos para imprimir una representación en texto del modelo/clase

- Andrés Cruz

In english

El metodo __str__ en los modelos para imprimir una representación en texto del modelo/clase

Lo siguiente que vamos a ver es una característica que nos permite representar un objeto como un String y el mismo es el método llamado Str.

Ya que si intentamos imprimir desde un template o empleando la función print un objeto que pertenezca a un modelo (o clase en general); veremos que aparecerá algo como lo siguiente:

Comment object (1)

En donde el Comment es el nombre del modelo y el (1) es el identificador en la base de datos.

Ahora bien, nosotros podemos representar un modelo de Django como si fuera un simple texto; realmente este es una característica que nos ofrece Python y no Django, que es poder representar un objeto como si fuera un string; por lo tanto cuando hacemos el print de este objeto básicamente va a aparecer la representación que definamos en la función Str; por ejemplo, para nuestro modelo:

class Comment(models.Model):
    text = models.TextField()
    date_posted = models.DateTimeField(auto_now_add=True)
    element = models.ForeignKey(Element, related_name='comments', on_delete=models.CASCADE, NULL=True)
 
    def __str__(self):
        return 'Comentario #{}'.format(self.id) 

Aquí nosotros podemos acceder a todos los atributos y métodos del modelo que contenga a dicha función; y este método es empleado internamente por Python para  representar dicha instancia de una clase mediante un string al momento de imprimir el texto.

Y si imprimimos el siguiente objeto:

print(elements[0])

Al hacer un print: 

Comentario #1

Aparecerá el texto que configuramos anteriormente; esto lo puedes emplear para Ada vez que tengas una clases y en algún punto la quieras imprimir, ya se mediante la función de print o desde el template de Django.

Acepto recibir anuncios de interes sobre este Blog.

Veremos como representar un objeto como un String en Django o Python cuando imprimes el mismo en tu template o por la consola.

- Andrés Cruz

In english

) )