Добавление значений по умолчанию для заголовков столбцов в Django - PullRequest
0 голосов
/ 09 марта 2012

У меня есть скрипт, который импортирует данные в таблицах с других сайтов.Таблицы имеют ширину от 5 до 15 столбцов и произвольную длину.

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

Таким образом, автоматический код генерирует 2 массива, первый из строк:
возможным_headers = ["one", "two", "three"...]
Второй из индексов в этом первом массиве
вероятно, что заголовки = [2, 0, 5 ...]
(заголовки столбцов будут" три ", затем" один ", затем" шесть "")

И используйте их в моем шаблоне так:

{% for likely_head in likely_headers %}
<th>

  <select name="colHeader">
  {% for poss_head in possible_headers %}

    {% if forloop.counter0 == likely_headers.forloop.parentloop.counter0 %}
      <option value="Col:{{forloop.counter0}}" selected>{{poss_head}}</option>
    {% else %}
      <option value="Col:{{forloop.counter0}}">{{poss_head}}</option>
    {% endif %}

  {% endfor %}
</select>

</th>

{% endfor %}

С мыслью, что вероятный заголовок будет выбранным / выбранным по умолчанию элементом в выбранном входе.Проблема:

likely_headers.forloop.parentloop.counter0

Не оценивает.forloop.parentloop.counter0 работает правильно, но, очевидно, его нельзя использовать в качестве индекса в списке.

Я новичок в django, поэтому, вероятно, я все делаю неправильно, пожалуйста, будьте любезны!

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

Список целых чисел, который, по моему мнению, был в действительности, представлял собой список строк ["1", "5", "3"], поэтому они не смогли сравнить с итератором цикла for. Создание реального списка целых решило проблему.

0 голосов
/ 09 марта 2012

Я не понимаю, почему вы используете likely_headers.forloop.parentloop.counter0, когда вы должны использовать forloop.parentloop.counter0 в соответствии с документами https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

Вы также можете попробовать решить эту проблему, инкапсулируя счетчик с тегом {% with %}

{% for likely_head in likely_headers %}
  {% with forloop.counter0 as parent_counter %}
    {% for poss_head in possible_headers %}
       {{ parent_counter }}
    {% endfor %}
  {% endwith %}
{% endfor %}

Я не проверял, что это работает наверняка, но я думаю, что должно.

Также вы, вероятно, пытаетесь решить проблему, которая не должна решаться в шаблонах. Вы можете попробовать использовать теги, обрабатывать заголовки в представлении (используя библиотеку?) И просто возвращать список заголовков, которые должны быть отображены.

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