Pregunta

¿Es posible cambiar algunos elementos específicos en un objeto QuerySet? En mi caso estoy tratando de cortar los campos "Título" con una longitud de más de 40 caracteres y añadir "..." al final del campo.

¿Fue útil?

Solución

Hay 2 formas de hacer lo que quiere.

El primero es el uso de un filtro de Django. Así que si se recorre los elementos de su conjunto de consultas y mostrarlos en una página de su uso algo como truncatewords . Se podría utilizar este como este en su plantilla:

{% for item in queryset %}
    <h1>{{ item.title|truncatewords:3 }}</h1>
{% endfor %}

No se ve que hay un filtro de Django para truncar la base del número de caracteres. Si desea escribir su propio filtrar que no es tan difícil de hacer.

La otra opción es poner un método en su modelo para hacer lo que quiera. He aquí un ejemplo:

@property
def short_title(self):
    return '%s...' % self.title[:40]

A continuación, sería capaz de hacer referencia a esto en cualquier lugar en su plantilla como {{}} object.short_title.

Otros consejos

Sugiero añadir una nueva propiedad 'adjusted_title' a cada objeto

for item in your_query_set:
    if(len(item.title) > 40):
        item.adjusted_title = item.title[0:40] + "..."
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top