Frage

Ist es möglich, einige bestimmte Elemente in einem Queryset -Objekt zu ändern? In meinem Fall versuche ich am Ende des Feldes "Title" -Felder mit Länge von mehr als 40 Zeichen zu schneiden und "..." anzuhängen.

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten, was Sie wollen.

Die erste besteht darin, einen Django -Filter zu verwenden. Wenn Sie also die Elemente Ihres Querysets durchlaufen und sie auf einer Seite anzeigen Truncatewords. Sie würden dies so in Ihrer Vorlage verwenden:

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

Es sieht nicht so aus, als gäbe es einen Django -Filter für die Kürzung auf der Anzahl der Zeichen. Wenn Sie wollen Schreiben Sie Ihren eigenen Filter Es ist nicht so schwer zu tun.

Die andere Möglichkeit besteht darin, eine Methode auf Ihr Modell zu setzen, um das zu tun, was Sie wollen. Hier ist ein Beispiel:

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

Sie könnten dann in Ihrer Vorlage überall in Ihrer Vorlage als {{Object.short_title}} verweisen.

Andere Tipps

Ich schlage vor, jedem Objekt eine neue Eigenschaft 'Adjusted_title' hinzuzufügen

for item in your_query_set:
    if(len(item.title) > 40):
        item.adjusted_title = item.title[0:40] + "..."
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top