我有以下模型,其中包含布尔字段
class Prb(models.Model):
#other fields
disabled = models.BooleanField(default=False)
和模型的模型
class PrbModelForm(ModelForm):
class Meta:
model=Prb
在我看来,我使用prb作为实例
渲染prbmodelformprb = get_object_or_404(Prb, pk=4)
prb_model_form = PrbModelForm(request.POST or None, instance=prb)
此模型的prb.disabled字段为0(使用SQLite数据库) 但是当我渲染表格时虽然禁用了字段为0复选框被选中。我怎么解决这个问题?我想在此添加disabled是一个SQLite布尔字段,并且使用inspectdb将数据模式转换为模型。为什么不正确呈现复选框状态?
编辑:查询按照应有的方式工作,就在我这样做的时候
Prb.objects.filter(disabled=True)
它会返回正确的prb。全部禁用等于1。
编辑#2:视图中prb.disabled的值为0
表格渲染如下(仅提供复选框字段)
<input checked="checked" id="id_disabled" name="disabled" type="checkbox" value="0">
答案 0 :(得分:0)
仅供其他人知道......问题出在SQLite上。事实证明,当用户没有将字段设置为非null时,Django必须使用NullBooleanField而不是普通的BooleanField。从BooleanField迁移到NullBooleanField(同意数据库),然后迁移回BooleanField以更改db的架构。我希望从orm和django完成所有事情,这就是我走了很长路的原因(即使用迁移而不是仅使用sqlite命令行中的sql来改变字段)
谢谢大家...