Я пытаюсь создать редактируемую таблицу начальной загрузки, в которой каждая ячейка представляет значение json. Я определил модель Django с этим JSONField (не Postgres) Это моя Модель:
class Extracted_Tables(models.Model):
...
content = JSONField(blank=True, null=True)
Мой Шаблон
<tbody>
{% for form in formset.forms %}
<tr>
{% for field in form %}
{% if field.is_hidden %}
<input type="hidden" >{{ field }}</input>
{% else %}
{% for k,v in field.value.items %}
<td>{{v}}</td>
{% endfor %}
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
Этот шаблон отображает следующий HTML
<tr>
<td>Jamaica</td>
<td>Kingston</td>
<td>North America</td>
<td>11424</td>
<td>2500000</td>
<input type="hidden"><input type="hidden" name="formset_1-0-id" value="353" id="id_formset_1-0-id">
</tr>
Чтобы лучше понять, почему это не работает: я использовал модель Django, где мои ячейки были атрибутами этой модели. У меня не было проблем с редактированием ячеек в этом случае, так как я редактировал поля модели. На этот раз мои ячейки не являются самими полями модели: единственное поле модели, которое у меня есть, это JSONField, и я пытаюсь для редактирования ячеек, которые являются значениями этого json.
Модель:
class Extracted_Variables(models.Model):
variables = models.CharField(max_length=500)
values = models.CharField(max_length=500)
Шаблон:
<tbody>
{% for form in formset.forms %}
<tr>
{% for field in form %}
{% if field.is_hidden %}
<input type="hidden" >{{ field }}</input>
{% else %}
<td>{{ field }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
Визуализированный шаблон:
<tr>
<td><input type="text" name="form2-0-variables" value="variable 1" maxlength="500" class="form-control" id="id_form2-0-variables"></td>
<td><input type="text" name="form2-0-values" value="whatever" maxlength="500" class="form-control" id="id_form2-0-values"></td>
<input type="hidden"><input type="hidden" name="form2-0-id" value="1" id="id_form2-0-id">
</tr>
Мы видим, что форма была создана путем добавления идентификаторов и определенных атрибутов на основе полей модели, тогда как ничего из этого не произошло, когда я отображал значения JSONField.
Должен ли я пытаться создать эти поля вручную при создании формы в шаблоне? Или какой подход у меня должен быть здесь?