У меня есть проект Django для управления списком статей в журнале. Основная модель Article
. Это имеет различные поля для хранения вещей как заголовок статьи, года издания, предмета, а также списка компаний, упомянутых в статье. (company
своя собственная модель).
Я хочу шаблон, который распечатывает список статей, отсортированных по категориям, и также список упомянутых компаний.
Однако я поражаю две проблемы.
Во-первых, 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
тег шаблона для сортировки этой внутренней части шаблон, или если я использую QuerySet order_by
звонить вместо этого?
И я предполагаю, что лучше использовать regroup
, вместо того, чтобы пытаться кодировать это самостоятельно в Python в представлении?
С наилучшими пожеланиями, Victor
первый вопрос
Используйте фильтр соединения типа python
{{ article.company.all|join:", " }}
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#join
второй вопрос
Мой вопрос , лучше использовать тег шаблона dictsort для сортировки этого внутри шаблона, или мне следует использовать Вместо этого вызов QuerySet order_by?
Я бы использовал order_by QuerySet. Мне нравится делать такие вещи в БД. Благодаря огромному набору данных вы можете использовать индексы базы данных.
И я считаю, что лучше использовать перегруппировку, чем пытаться кодировать это я на Python внутри представления?
перегруппироваться. Определенно лучше использовать собственные функции Python.
Попробуйте использовать forloop.last
для своего первого вопроса
{% for company in article.companys.all %}
{{company.name}}{% if not forloop.last %}, {% endif %}
{% endfor %}