【发布时间】:2023-03-10 01:03:01
【问题描述】:
我正在尝试创建一个可编辑的引导表,其中每个单元格代表一个 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 的值时没有发生任何情况。
在模板中创建表单时是否应该尝试手动创建这些字段?或者我应该在这里有什么方法?
【问题讨论】:
标签: django mongodb formset django-jsonfield