django python - как вывести прогрессивное число c значение списка - PullRequest
2 голосов
/ 14 июля 2020

Я хотел бы отобразить объект списка с прогрессивным номером следующим образом:

  1. Элемент списка 1 # (с id = 10)
  2. Элемент списка 2 # (с идентификатором = 2)
  3. Элемент списка 3 # (с id = 3)
  4. и так далее ...

Я не хочу использовать идентификатор / pk, поскольку я располагаю объекты в алфавитном порядке.

Я использую представления на основе классов:

class EquipmentType_ListView(ListView):
   model               = EquipmentType
   template_name       = 'equipment/equipment_type.html' 
   context_object_name = 'obj_list' #default = object_list
   ordering            = ['type'] 

с очень простой моделью:

class EquipmentType(models.Model):
   type        = models.CharField(max_length=100, unique=True)
   date_posted = models.DateTimeField(auto_now_add=True)

и соответствующий html:

{% extends 'equipment/base.html'%}
{% block content%}
{% for instance in obj_list %}
 <article class="media content-section">
  <div class="media-body">
    <div class="article-metadata">
      <a class="mr-2" href="#">{{ instance.type }}</a>
        <small class="text-muted">{{ instance.date_posted}}</small>
    </div>
  </div>
</article>
{% endfor %}

Мой вопрос: следует ли мне добавлять код в файл views.py или непосредственно в файл html (для цикла)?

Я не опытный программист, но я чувствую, что все должно быть прямо. Также было бы очень полезно применять в общем для всех отображаемых элементов списка.

Я подумал, что должен быть какой-то «метод» для «например, в obj_list», где вы могли бы распечатать прямо на html относительный номер экземпляра или, возможно, добавление внутреннего цикла for для выполнения работы. Я изо всех сил пытаюсь найти что-нибудь полезное при поиске в Google.

большое спасибо за помощь.

PS: Это мой первый пост о stackoverflow, надеюсь, я все сделал правильно :)

Карло

1 Ответ

0 голосов
/ 14 июля 2020

Django обеспечивает поддержку для этого изначально: {{ forloop.counter }}

{% extends 'equipment/base.html'%}
{% block content%}
{% for instance in obj_list %}
 <article class="media content-section">
  <div class="media-body">
    <div class="article-metadata">
      <a class="mr-2" href="#">{{ forloop.counter }}. {{ instance.type }}</a>
        <small class="text-muted">{{ instance.date_posted}}</small>
    </div>
  </div>
</article>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...