Изменение результата запроса
-
21-09-2019 - |
Вопрос
Можно ли изменить некоторые конкретные элементы в объекте 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] + "..."