我正在尝试创建一个可编辑的引导表,其中每个单元格代表一个 json 值。我已经用这个JSONField定义了一个 Django 模型(不是 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>
我们看到表单是通过添加 Id 和基于模型字段的特定属性创建的,而当我显示 JSONField 的值时,这些都没有发生。
在模板中创建表单时,我是否应该尝试手动创建这些字段?或者我应该在这里有什么方法?