Список полей модели с пропущенными значениями, красиво отформатирован в шаблоне Django - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь создать представление в Django для отображения каждой записи в модели и любых полей, в которых отсутствуют значения.Шаблон представляет собой таблицу: один столбец - это определенное поле, а другой - список полей с пропущенными значениями.У меня есть рабочая версия, но пропущенные поля просто связаны вместе, и я хотел бы, чтобы они были красиво отформатированы с запятыми между ними.

#models.py
class exif(models.Model):
    image = models.ForeignKey('image', on_delete=models.CASCADE, blank=False, null=False)
    filename = models.CharField(max_length=100, blank=True, null=True)
    artist = models.CharField(max_length=100, blank=True, null=True)
    copyright = models.CharField(max_length=100, blank=True, null=True)
    keywords = models.CharField(max_length=100, blank=True, null=True)
    caption = models.CharField(max_length=100, blank=True, null=True)
    comment = models.CharField(max_length=100, blank=True, null=True)
    ...
#views.py
def exif_export(request):
    exif_records = serializers.serialize("python", exif.objects.all())
    return render(request, 'exif_export.html', {'exif_records': exif_records})
#exif_export.html
<table>
<tr>
  <th>File</th>
  <th>Missing Exif Fields</th>
</tr>
{% for record in exif_records %}
<tr>
  <td>
  {% for field, value in record.fields.items %}
    {% if field == 'filename' %}
      {{ value }}
    {% endif %}
  {% endfor %}
  </td>
  <td>
  {% for field, value in record.fields.items %}
    {% if not value %}
        {{ field }}, <!-- This comma makes a trailing comma at the end of the list -->
    {% endif %}
  {% endfor %}
  </td>
</tr>
{% endfor %}
</table>

Есть ли хороший способотформатировать эти поля в красивый список?Прямо сейчас это будет выглядеть так:
artist, comment,
В то время как было бы неплохо, если бы это выглядело так:
artist, comment
Или даже лучше:
Artist, Comment
Я должен сделать словарь или что-то в представлении и передать это шаблону?Или есть способ составить список полей с пропущенными значениями в Django и / или Python в целом?Было бы хорошо, если бы шаблон мог справиться с этим, я просто не могу придумать другого пути.

1 Ответ

1 голос
/ 21 сентября 2019

Вы можете сделать {{ field|capfirst }} для заглавных букв первой буквы, чтобы удалить запятую, вы можете сделать что-то вроде

  {% for field, value in record.fields.items %}
    {% if not value and field != last_field %}
        {{ field|capfirst }},
    {% endif %}
  {% endfor %}
  {{ last_feild|capfirst }}

и передать last_field куда-нибудь (вероятно, в модели).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...