Генерация динамического поля формы в шаблонах Django - PullRequest
1 голос
/ 14 января 2010

У меня проблема с выяснением, как решить эту проблему с помощью Django и (возможно) пути Python. Я отправляю хэш в шаблон, который содержит следующие значения

{'date': '2009-12-30', 'locations': [{u'lat': 43.514000000000003, u'lng': -79.844032999999996, u'place': u'1053 Bowring Cres, Milton, ON L9T, CA', u'description': u'Home base'}, {u'lat': 43.730550000000001, u'lng': -79.805334000000002, u'place': u'50 Dawnridge Trl, Brampton, ON L6Z, CA', u'description': u'Southfork'}]}

Затем я передаю эти данные в свой шаблон, и мне нужно сделать следующее:

  • создать форму
  • предварительно заполнить несколько полей формы, связанных со значениями внутри 'местоположений'
  • , если у меня менее 5 'местоположений', добавьте несколько пустых полей формы, пока у меня не будет 5

Вот код, который загружает и генерирует данные - он получает информацию из CouchDB

 def get_by_id(self, username, search_id):
      if username and search_id:
          info = db.get(search_id)

          if info['user'] == username:
              return {'date': info['date'],
                      'locations': json.loads(info['locations'])}

Полагаю, я мог бы каким-то образом манипулировать тем, что находится в info ['location'], чтобы добавить ID, но я пытался понять, как Python обрабатывает итерации по JSON.

Вот код в шаблоне, который я использую для создания формы. my_search содержит данные, которые я показал выше

<form method="post" action="/locations">
<input type="hidden" name="search_id" value="{{ search_id }}">
    <table>
        <tr>
            <th>Location</th>
            <th>Description</th>
        </tr>
        {% for location in my_search.locations %}
        <tr>
            <td><input type="text" name="location" id="id_location"
                       value="{{ location.place }}"></td>
            <td><input type="text" name="description" id="id_description"
                       value="{{ location.description }}"></td>
        </tr>
        {% endfor %}
     </table>
     <input type="submit" value="Update Plan">
  </form>

Мы будем очень благодарны за мысли о том, как (а) легко добавить уникальный идентификатор и (б) добавить пропущенные пустые пары полей формы, если у меня менее 5 мест.

Ответы [ 2 ]

2 голосов
/ 14 января 2010

(а)

id="id_location_{{ forloop.counter }}"
2 голосов
/ 14 января 2010
if info['user'] == username:
  locations = (json.loads(info['locations']) +
    [{'place': '', 'description': ''}] * 5)[:5]

  return {'date': info['date'], 'locations': locations}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...