Вопрос

Можно ли изменить некоторые конкретные элементы в объекте Queryset? В моем случае я пытаюсь нарезать поля «заголовок» с длиной более 40 символов и добавлять «...» в конце поля.

Это было полезно?

Решение

Есть 2 способа сделать то, что вы хотите.

Первый - использовать фильтр Django. Поэтому, если вы пробираетесь через элементы вашего запроса и отображаете их на странице, используйте что -то вроде усеченные слова. Анкет Вы бы использовали это так в своем шаблоне:

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

Не похоже, что есть фильтр Django для усечения базы на количестве символов. Если ты хочешь Напишите свой собственный фильтр Это не так сложно сделать.

Другой вариант - поместить метод в вашей модели, чтобы делать то, что вы хотите. Вот пример:

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

Затем вы сможете ссылаться на это в любом месте в своем шаблоне как {{object.short_title}}.

Другие советы

Я предлагаю добавить новое свойство «Корректировать_title» в каждый объект

for item in your_query_set:
    if(len(item.title) > 40):
        item.adjusted_title = item.title[0:40] + "..."
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top