У меня есть проект Django для управления списком журнальных статей.Основная модель Article
.Здесь есть различные поля для хранения таких вещей, как название статьи, дата публикации, тема, а также список компаний, упомянутых в статье.(company
- это собственная модель).
Мне нужен шаблон, который распечатывает список статей, отсортированных по категориям, а также список упомянутых компаний.
Однако яm две проблемы.
Во-первых, поле company
является полем ManyToMany.Сейчас я печатаю это успешно, используя итерацию all
, благодаря этому такому вопросу =).(Хотя любопытно, где эта all
итеративно документирована в документации Django?)
перечисление объектов из ManyToManyField
Однако я хотел бы напечатать ","(запятая с последующим пробелом) после каждого элемента, , за исключением последнего элемента.Таким образом, результат будет:
Joe Bob Company, Sarah Jane Company, Tool Company
, а не:
Joe Bob Company, Sarah Jane Company, Tool Company,
Как этого добиться с помощью системы шаблонов Django?
Во-вторых, каждый Article
имеетCharField с именем category
, в котором хранится категория для статьи.Я хотел бы, чтобы статьи сортировались по категориям, если это возможно.Поэтому я использую QuerySet и получаю хороший список соответствующих статей в article_list.Затем я использую шаблонный тег regroup
, чтобы отсортировать его по категориям и напечатать каждую.
{ 'tennis': ('article_4', 'article_5')
'cricket': ('article_2', 'article_3')
'ping pong': ('article_1')
}
Однако мне нужно убедиться, что мой входной список отсортирован, прежде чем передать его в regroup
,У меня вопрос, лучше ли использовать шаблонный тег dictsort
для сортировки этого внутри шаблона, или я должен вместо этого использовать order_by
вызов QuerySet?
И я предполагаю, что лучше использовать regroup
вместо того, чтобы пытаться самому кодировать это в Python внутри представления?
Ура, Виктор