python - 不要在 models.py 上显示复选框类型布尔值
问题描述
我有模型项目提交 itm_stop:
class item(models.Model):
itm_stop=models.BooleanField(verbose_name='item stop',default=False)
在文件 forms.py 中:
from django import forms,modelsForm
class itemsForm(modelsForm.Form):
class Meta:
model =item
fields = "__all__"
在文件 views.py 中:
from .forms import itemsForm
def items_create(request):
if request.method == 'POST':
form = itemsForm(request.POST, request.FILES)
else:
form = itemsForm()
return render(request, 'items/items.html',{"items" :form})
在文件模板 item.html 中:
{% load widget_tweaks %}
{% for field in items %}
<!-- append to an attribute -->
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
当我做演示时,我无法显示复选框,它在页面上显示为一个空框,我没有找到原因
解决方案
我这样做的方式是子类化表单类而不是 modelForm 类
因此,在您的表单中,您将像这样使用 forms.BooleanField ...
from django import forms
class itemsForm(forms.Form):
itm_stop= forms.BooleanField(
label='item stop',
initial=False
)
以下是您访问它们的方式:您不需要为项目中的字段做
<div class="form-group">
{% if field.errors %} has-error{% endif %}
<label for="{{ items.itm_stop}} ">{{items.itm_stop.label}}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endfor %}
推荐阅读
- python - 从 S3 读取 netcdf4 文件
- python - 从文件中打印单行并在末尾删除多余的行
- r - 使用 R 中的查找表对字符串中的字符求和
- javascript - 在 index.html 的脚本标签中添加脚本标签
- python - 如何从列表中获取元素对的总和
- java - csv到二维双数组
- python - 如何使用 kv 文件刷新 Kivy 中的 GridLayout
- r - 当 x 和 y 不变时,如何使 geom_bar 颜色随 gganimate 变化?
- python - python挂在关闭/终止多进程任务上。仅通过 CTRL+Break 停止
- c++ - 如何在cpp中编写这个可以从函数返回的宏